2017-07-31 41 views
0

我必须将一个带有servlet的旧spring应用程序移植到spring引导应用程序中。在单独的servlet中访问弹簧环境

我为现有的servlet配置了一个java样式的配置文件,但我无法将弹簧环境传递给它们。

例如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我想注入春天的环境,但我总是空的ENV vairable

public class InitServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    @Autowired 
    Environment env; 

    public InitServlet() throws Exception { 
    } 
........ 
} 

servlet本身工作正常如果我调试他们在给定的url映射他们响应,我只想从他们访问弹簧环境从application-X.properties取决于给定的弹簧配置文件的数据。

+0

将它们注册为“@ Bean”,并且不要在生成“ServletRegistrationBean”的方法中构造它们。 –

回答

0

Spring只能注入Spring bean,需要在ServletConfig配置类中注册InitServlet作为Bean。