gpt4 book ai didi

spring-boot - Spring Boot应用中如何定义资源,相当于传统web.xml中的

转载 作者:行者123 更新时间:2023-12-03 17:38:10 26 4
gpt4 key购买 nike

我正在开发一个项目,该项目是使用 SpringBoot 1.4.3-RELEASE 开发的。

根据公司内部文档,它要求我们在 WEB-INF/web.xml 中定义一个,每个应用程序。示例如下:

<resource-ref>
<res-ref-name>connectivityConfiguration</res-ref-name>
<res-type>com.hide-my-company-name.ConnectivityConfiguration</res-type>
</resource-ref>

然后使用 JNDI 查找来获取某个对象。但我没有 WEB-INF/web.xml。

因此,我在本地 tomcat context.xml 中定义了资源,而不是 WEB-INF/web.xml。
<Context>
<Resource name="connectivityConfiguration"
type="com.hide-my-company-name.ConnectivityConfiguration" />
</Context>

有用。但是,仅在我本地的开发环境中。
因为我无法在部署后更改“context.xml”或“server.xml”。

题:
有没有其他方法可以使用 SpringBoot 定义相同的资源?例如。通过。 Java 代码,还是通过 application.properties?

最佳答案

@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(WebApplication.class);
}

public static void main(String[] args) throws Exception {
SpringApplication.run(WebApplication.class, args);
}

@Bean
public TomcatEmbeddedServletContainerFactory tomcatFactory() {
return new TomcatEmbeddedServletContainerFactory() {

@Override
protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) {
tomcat.enableNaming();
return super.getTomcatEmbeddedServletContainer(tomcat);
}

@Override
protected void postProcessContext(Context context) {
ContextResource resource = new ContextResource();
resource.setName("connectivityConfiguration");
resource.setType("com.hide-my-company-name.ConnectivityConfiguration");
context.getNamingResources().addResource(resource);
}
};

}
}

关于spring-boot - Spring Boot应用中如何定义资源,相当于传统web.xml中的<resource-ref>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43585906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com