如何解决SpringBoot Autowired仅适用于嵌入式Tomcat
我有一个Spring Boot / Vaadin 14
应用程序,确实使我抓狂。我已经做了1000次,但似乎找不到我想要的东西。
当我使用嵌入式Tomcat(spring-boot:run
)运行应用程序时,一切正常。但是,当我使用外部Tomcat 9(在同一台机器上)运行它时,我的自动装配依赖项为空。
我的代码:
AppConfig.java
@SpringBootConfiguration
@ComponentScan("com.example.myapp")
@EnableVaadin
public class AppConfig implements Serializable {
private static final long serialVersionUID = -2113829779705972298L;
}
Vaadin ETL视图:
@Route(value = "etl",layout = MainView.class)
@PageTitle("ETL")
@RouteAlias(value = "",layout = MainView.class)
public class EtlView extends Div implements Serializable {
private static final long serialVersionUID = -6417032793665450391L;
@Autowired
private AsyncRestClientService service; // this works with embedded. NULL with external.
...
AsyncRestClientService:
@Service
public class AsyncRestClientService implements Serializable {
...
我的应用程序:
@SpringBootApplication
public class MyAppApplication {
public static void main(String[] args) {
SpringApplication.run(MyAppApplication .class,args);
}
}
所有类都在com.example.myapp
包中,因此组件扫描应对此进行检查。
有什么想法我想念的吗?
顺便说一句,我正在使用Vaadin 8应用程序执行完全相同的操作,并且一切正常。即使使用我的外部Tomcat 9。
谢谢
编辑
注意,我将其打包为WAR
在我的pom.xml中。
解决方法
在将Spring Boot应用程序部署到外部Tomcat时,您可能需要将该应用程序打包为WAR而不是JAR。检查一下:https://spring.io/guides/gs/convert-jar-to-war
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。