Spring获取ServletContext并将其作为Bean提供

时间:2017-11-13 16:50:05

标签: java spring spring-mvc servlets javabeans

  

我想在Java Spring Webproject中获取ServletContext并使用   它来获取我的Web应用程序项目的绝对路径。我还是个   JavaEE和Spring的初学者,也许我有一些错误的概念。   在java类中,我想要使用ServletContext,我得到了   使用@Autowired ServletContext上下文时只有一个空对象;   但是在我的RestConfiguartion类中,它扩展了   WebMvcConfigurerAdapter类,我得到了ServletContext,我能够   在Java Bean中使用它,返回类型为ServletContext。但是我   我不知道如何在另一个类中使用Bean来获取   ServletContext,这可能吗?

@Configuration
@EnableWebMvc
@Import({ ServiceConfiguration.class, SecurityConfiguration.class })
@ComponentScan(basePackages = { "de.rest", "de.security" })
public class RestConfiguration extends WebMvcConfigurerAdapter {

  @Autowired
  ServletContext context;    

  @Bean
  public ServletContext getServletContext() {
    System.out.println("*** Context path: *** " + context.getRealPath("/"));
    return context;
  }}

2 个答案:

答案 0 :(得分:1)

你可以写

@Autowired
ServletContext context;

在其他bean注释类中也是如此。您将获得相同的上下文。 因此,您不需要指定:

@Bean
  public ServletContext getServletContext() {
    System.out.println("*** Context path: *** " + context.getRealPath("/"));
    return context;
  }}

例如(目录中的任何类,在注释@ComponentScan中指定):

@Bean
class X {
    @Autowired
    ServletContext context;

    ...
}

答案 1 :(得分:0)

感谢您的帮助我通过将目标类的包添加到@ComponentScan来解决它,声明了我的目标类@Component并插入了之前使用过的Bean。这些是结果代码片段:

empty