我有一个包含三个jar文件的项目结构。所有都加载到一个类路径中然后执行。我正在使用spring core,jpa和hibernate。 @Services
/ @Autowired
工作正常,以及实体和存储库(全部在mysql数据库上)。
现在我希望项目可以通过网络/互联网发送和接收消息。所以我问了一些人如何在不破坏现有结构的情况下实现这一目标。我被告知spring-boot是我的架构,因为我不需要Web服务器(tomcat或glassfish)。
但是现在我不确定这是否正确,因为我找不到任何说同样事情的消息来源。因此我尝试实施它以便自己验证它
我可以在此处找到我对项目(所有pom.xml
文件和我的配置类)所做的重要更改:http://84.141.90.123:9910/
根据我的阅读,我需要弹簧启动的@SpringBootApplication
注释。这相当于@Configuration
,@ComponentScan
,@EnableAutoConfiguration
,@EnableWebMvc
。
前两个已经在我的结构中。但是当我添加最后两个注释时,我会得到不同的错误:
当我添加@EnableAutoConfiguration
时,我
Caused by: java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
当我添加@EnableWebMvc
时,我
Caused by: java.lang.IllegalArgumentException: A ServletContext is required to configure default servlet handling
从我糟糕的英语结论来看,@EnableWebMvc
错误似乎表明应用程序需要一个Web服务器(tomcat或glassfish)。
主要声明是错误的,我没有Web服务器就无法启动spring boot?
因为我没有为spring使用任何xml文件和/或属性文件(它们没有用),所以我只依赖于基于java代码的spring,jpa和hibernate配置。因此,只有很少的教程/线程可以提供帮助。大多数时候他们只是说add thi or add that to your xml
,但因为我没有它们,所以屁股有点痛。
我也用aspectj编译,所以我不能使用spring compile parent。而且我也无法操纵主类/方法,因为主类位于外部jar文件中,而不是由我编程。
如此具体:
答案 0 :(得分:0)
如果您想通过HTTP接收消息(即运行REST API),那么您需要一个Web服务器 如果您只想通过HTTP发送消息,那么您只需要一个HTTP客户端。
Spring-boot可以选择运行嵌入式Web服务器(默认为tomcat),您不需要运行单独的应用程序服务器。
要解决您的构建问题,我将首先使用spring initializr生成项目。
您可以选择所需的依赖项(尝试使用底部的高级版本链接),它将为您构建一个具有正确结构,构建文件和兼容依赖项的maven / gradle项目。
答案 1 :(得分:0)
改变:
public static void main(String[] args) {
SpringApplication.run(ActiveMqApplication.class, args);
}
到:
public static void main(String[] args) {
new SpringApplicationBuilder(ActiveMqApplication.class)
.web(WebApplicationType.NONE).run(args);
}