Невозможно назначить ServletContext Spring 3JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Невозможно назначить ServletContext Spring 3

Сообщение Anonymous »

Я пытаюсь использовать servletcontext.getRealPath в своем классе Util для загрузки файлового ресурса (не является частью модульного тестирования), но это не работает.

Я попробовал использовать «реализует ServletContextAware»:

Код: Выделить всё

@Component
public class Utils implements ServletContextAware{
private ServletContext servletContext;

@Override
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;

System.out.println("**** "+servletContext);
}
}
Это выдает NPE, поскольку контекст сервлета не назначается Spring.

И маршрут @Autowired:

Код: Выделить всё

@Component
public class Utils{

@Autowired
private ServletContext servletContext;
При запуске Tomcat выдается исключение NoSuchBeanDefinitionException:

Код: Выделить всё

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.servlet.ServletContext] found for dependency: expected at le
ast 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
Я добавляю свой код инициализации на случай, если я делаю что-то неправильно, что мешает Spring внедрить правильный bean-компонент.

Код: Выделить всё

public class WebAppInitializer implements WebApplicationInitializer {

private static Logger LOG = LoggerFactory.getLogger(WebAppInitializer.class);

@Override
public void onStartup(ServletContext servletContext) {
WebApplicationContext rootContext = createRootContext(servletContext);

configureSpringMvc(servletContext, rootContext);

FilterRegistration.Dynamic corsFilter = servletContext.addFilter("corsFilter", CORSFilter.class);
corsFilter.addMappingForUrlPatterns(null, false, "/*");

//        configureSpringSecurity(servletContext, rootContext);
}

private WebApplicationContext createRootContext(ServletContext servletContext) {
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();

//        rootContext.register(CoreConfig.class, SecurityConfig.class);
rootContext.register(CoreConfig.class);
rootContext.refresh();

servletContext.addListener(new ContextLoaderListener(rootContext));
servletContext.setInitParameter("defaultHtmlEscape", "true");

return rootContext;
}
CoreConfig.class:

Код: Выделить всё

@Configuration
public class CoreConfig {

@Bean
public CaptionFixture createCaptionFixture() {
return new CaptionFixture();
}

@Bean
public Utils createUtils () {
return new Utils();
}
}
Utils — это класс с контекстом сервлета.

Я просмотрел предложенные ответы: здесь и здесь, и это не сработало.

Подробнее здесь: https://stackoverflow.com/questions/214 ... t-spring-3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»