2015-10-14 3 views

ответ

0

У вас не может быть более одного ServletContext для каждого приложения (по определению JavaEE).

Решение A) Измените область действия вашего объекта на prototype и наймите несколько экземпляров вашего компонента.

Решение B) (лучше) Используйте @Qualifier для вашего компонента, чтобы вы могли создавать два разных компонента для одного и того же класса. Если вы используете конфигурацию на основе xml, укажите разные имена для ваших компонентов. Если вы используете конфигурацию на основе классов, используйте @Bean(name = "name1"). Поместите @Qualifier("name1") и @Autowired вместе для извлечения желаемого компонента.

+0

Я думаю, что OP говорит о контексте сервлета от Spring, а не ServletContext от EE (это совсем другое). – dunni

+0

Не существует такой вещи, как «ServletContext» из Spring. Это может быть «ApplicationContext», о котором вы говорите. – bekce

+0

Да, как вы можете видеть, я написал «контекст сервлета», а не «ServletContext». Может быть, я мог бы написать «servlet ApplicationContext», чтобы было ясно. – dunni

0

Если вы говорите о контексте приложения Spring, специфичном для сервлета, а не о ServletContext из EE, то да, возможно иметь несколько экземпляров из них, поскольку вы можете определить контекст приложения для каждого сервлета (которые затем дочерние контексты контекста корневого приложения). Если вы определили компонент с областью приложения в каждом контексте сервлета, у вас есть один экземпляр для каждого контекста сервлета, т. Е. Несколько экземпляров в вашем приложении.

Смежные вопросы