如果應用程序在嵌入式容器中運行,我希望創建@Bean。如果應用程序在外部tomcat上運行,則不應創建該bean。有沒有什麼辦法可以創建@Conditional註釋來創建bean,只有當應用程序在嵌入式tomcat中運行時。只爲嵌入式tomcat或嵌入式服務器創建Bean
3
A
回答
3
而不是使用自定義條件,您可以使用僅在使用嵌入容器時啓用的Spring配置文件。當您將Spring Boot應用程序部署到Tomcat時,其主要方法不會運行,使其成爲啓用只希望在嵌入式案例中處於活動狀態的配置文件的好地方。
事情是這樣的:
@SpringBootApplication
public class So34924050Application extends SpringBootServletInitializer {
@Bean
@Profile("embedded")
public EmbeddedOnlyBean embeddedOnlyBean() {
return new EmbeddedOnlyBean();
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(So34924050Application.class);
}
public static void main(String[] args) {
new SpringApplicationBuilder(So34924050Application.class).profiles("embedded").run(args);
}
}
0
我用@ConditionalOnClass
註釋,如果存在嵌入式的Tomcat類只創建TomcatFactory。如果這不符合您的目的,您可以使用多個@CondtionalOn...
類來有條件地創建一個bean。例如@CondtionalOnProperty
。
即
// If running tomcat embedded, ensure that JNDI is enabled.
@Bean
@ConditionalOnClass(name = {
"org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory",
"org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer",
"org.apache.catalina.startup.Tomcat"
})
public TomcatEmbeddedServletContainerFactory tomcatFactory() {
return new TomcatEmbeddedServletContainerFactory() {
@Override
protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(final Tomcat tomcat) {
tomcat.enableNaming();
return super.getTomcatEmbeddedServletContainer(tomcat);
}
};
}
相關問題
- 1. Spring Boot嵌入式tomcat或不嵌入式tomcat
- 2. 嵌入式Web服務器
- 3. 春嵌入式服務器
- 4. Maven Tomcat(嵌入式)
- 5. 什麼是嵌入式服務器和嵌入式Java庫?
- 6. 嵌入式與獨立式Tomcat(HTTP)服務器
- 7. Neo4j嵌入式HA服務器模式
- 8. Windows嵌入式2009服務
- 9. 如何創建嵌入式WebSocket服務器Jetty 9?
- 10. 嵌入式Jetty服務器掛起
- 11. C#嵌入式FTP服務器
- 12. 嵌入式web服務器運行php
- 13. Neo4j服務器與嵌入模式
- 14. 嵌入式應用服務器
- 15. 使用嵌入式glassfish服務器
- 16. Chrome Packaged App +嵌入式Web服務器
- 17. C++ qt嵌入式mysql服務器
- 18. Android嵌入式網絡服務器
- 19. C#嵌入式smtp服務器
- 20. 嵌入式Java HTTP服務器
- 21. .NET中的嵌入式Web服務器
- 22. Neo4j rest服務器v/s嵌入式
- 23. Neo4j服務器與嵌入式
- 24. 嵌入式服務器的Web技術
- 25. 什麼是嵌入式LDAP服務器
- 26. 如何在嵌入式tomcat中運行泰坦服務器?
- 27. 在嵌入式tomcat服務器中設置「背書」目錄
- 28. Tomcat中的嵌入式ActiveMQ服務器8
- 29. 如何配置Maven Cargo以使用嵌入式Tomcat服務器?
- 30. 使用嵌入式tomcat服務器時發出警告
此代碼不能正常工作,它仍然呼籲嵌入式Tomcat和獨立的Tomcat太.... – b0c1