在单独的 servlet 中访问 spring 环境
Access spring environment in a separate servlet
我必须将带有 servlet 的旧 spring 应用程序移植到 spring 启动应用程序。
我已经为现有的 servlet 配置了一个 java 风格的配置文件,但是我无法将 spring 环境传递给它们。
例如 java 配置看起来像这样(我已经跳过了真正的映射)
@Configuration
public class ServletConfig {
@Bean
public ServletRegistrationBean initServletRegistration() throws ServletException {
ServletRegistrationBean bean = new ServletRegistrationBean();
try {
bean.setServlet(new InitServlet());
} catch (Exception e) {
NewLog.logError(this, "InitServlet threw an exception: " + e, e);
throw new ServletException("InitServlet threw an exception: " + e);
}
bean.setUrlMappings(Arrays.asList("...."));
bean.setLoadOnStartup(1);
return bean;
}
@Bean
public ServletRegistrationBean testReceiveServiceServletRegistration() {
ServletRegistrationBean bean = new ServletRegistrationBean();
bean.setServlet(new TestReceiveServiceServlet());
bean.setUrlMappings(Arrays.asList("...."));
return bean;
}
@Bean
public ServletRegistrationBean insertIntoInputQueueServletRegistration() {
ServletRegistrationBean bean = new ServletRegistrationBean();
bean.setServlet(new InsertIntoInputQueueServlet());
bean.setUrlMappings(Arrays.asList("...."));
return bean;
}
@Bean
public ServletRegistrationBean nonCxfRedirectServletRegistration() {
ServletRegistrationBean bean = new ServletRegistrationBean();
bean.setServlet(new NonCxfRedirectServlet());
bean.setUrlMappings(Arrays.asList(".....");
return bean;
}
然后在 servlet 中我想注入 spring 环境,但我总是为 env vairable
获取 null
public class InitServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Autowired
Environment env;
public InitServlet() throws Exception {
}
........
}
servlet 本身工作正常如果我在它们响应的给定 url 映射上调试它们,我只想从它们访问 spring 环境以从 application-X.properties 取决于给定的 spring 配置文件。
Spring 只能注入到 Spring bean,需要在 ServletConfig
配置中注册 InitServlet
作为 Bean class.
我必须将带有 servlet 的旧 spring 应用程序移植到 spring 启动应用程序。
我已经为现有的 servlet 配置了一个 java 风格的配置文件,但是我无法将 spring 环境传递给它们。
例如 java 配置看起来像这样(我已经跳过了真正的映射)
@Configuration
public class ServletConfig {
@Bean
public ServletRegistrationBean initServletRegistration() throws ServletException {
ServletRegistrationBean bean = new ServletRegistrationBean();
try {
bean.setServlet(new InitServlet());
} catch (Exception e) {
NewLog.logError(this, "InitServlet threw an exception: " + e, e);
throw new ServletException("InitServlet threw an exception: " + e);
}
bean.setUrlMappings(Arrays.asList("...."));
bean.setLoadOnStartup(1);
return bean;
}
@Bean
public ServletRegistrationBean testReceiveServiceServletRegistration() {
ServletRegistrationBean bean = new ServletRegistrationBean();
bean.setServlet(new TestReceiveServiceServlet());
bean.setUrlMappings(Arrays.asList("...."));
return bean;
}
@Bean
public ServletRegistrationBean insertIntoInputQueueServletRegistration() {
ServletRegistrationBean bean = new ServletRegistrationBean();
bean.setServlet(new InsertIntoInputQueueServlet());
bean.setUrlMappings(Arrays.asList("...."));
return bean;
}
@Bean
public ServletRegistrationBean nonCxfRedirectServletRegistration() {
ServletRegistrationBean bean = new ServletRegistrationBean();
bean.setServlet(new NonCxfRedirectServlet());
bean.setUrlMappings(Arrays.asList(".....");
return bean;
}
然后在 servlet 中我想注入 spring 环境,但我总是为 env vairable
获取 nullpublic class InitServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Autowired
Environment env;
public InitServlet() throws Exception {
}
........
}
servlet 本身工作正常如果我在它们响应的给定 url 映射上调试它们,我只想从它们访问 spring 环境以从 application-X.properties 取决于给定的 spring 配置文件。
Spring 只能注入到 Spring bean,需要在 ServletConfig
配置中注册 InitServlet
作为 Bean class.