问题描述
我有一个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