我想在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;
}}
答案 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