如果應用程序在嵌入式容器中運行,我希望創建@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. 春嵌入式服務器
- 3. 嵌入式Web服務器
- 4. 什麼是嵌入式服務器和嵌入式Java庫?
- 5. Neo4j嵌入式HA服務器模式
- 6. Windows嵌入式2009服務
- 7. 如何創建嵌入式WebSocket服務器Jetty 9?
- 8. 在嵌入式tomcat服務器中設置「背書」目錄
- 9. Tomcat中的嵌入式ActiveMQ服務器8
- 10. 使用嵌入式tomcat服務器時發出警告
- 11. 如何在嵌入式tomcat中運行泰坦服務器?
- 12. 嵌入式Java HTTP服務器
- 13. C#嵌入式FTP服務器
- 14. Neo4j服務器與嵌入式
- 15. .NET中的嵌入式Web服務器
- 16. 嵌入式應用服務器
- 17. 嵌入式服務器的Web技術
- 18. 嵌入式web服務器運行php
- 19. C#嵌入式smtp服務器
- 20. Neo4j rest服務器v/s嵌入式
- 21. Maven嵌入式Tomcat版本
- 22. Maven的Tomcat的嵌入式
- 23. springboot嵌入式Tomcat和Tomcat的嵌入,碧玉
- 24. 將彈性搜索部署爲嵌入式或客戶端/服務器模式
- 25. 嵌入式C分析服務器遷移服務器URLURL
- 26. 在嵌入式報表服務中創建的打開報表
- 27. Shibboleth嵌入式發現服務創建無限迴環
- 28. 嵌入式Scala和嵌入式Groovy
- 29. Power BI嵌入式 - 嵌入式瓷磚
- 30. 嵌入式Jetty測試Spring-Rest服務
此代碼不能正常工作,它仍然呼籲嵌入式Tomcat和獨立的Tomcat太.... – b0c1