2014-10-10 5 views
0

я имел возможность работать на только один проект с использованием пружины, и как он работал былПрактическое использование ApplicationContextAware весной

  1. сделать одноэлементный класс (позволяет сказать MySpringHelper), который имеет метод, как getBean (Строка beanName)
  2. Что getBean (String) делает, он первым проверяет наличие ApplicationContext, если он существует использует тот же, чтобы получить компонент, еще создает новый ApplicationContext и возвращает компонент
  3. Где в проецировании вам нужен боб просто вызовите MySpringHelper.getBean ("abc")

Помня об этом, когда я изучал весну, я заметил интерфейс «ApplicationContextAware» ... Я не уверен, когда это будет необходимо, использует вышеприведенный шаблон, такой интерфейс кажется бесполезным. Или неправильный шаблон/подход Singleton MySpringHelper?

Глядя вперед, чтобы узнать из вашего опыта

Чтобы дать более подробную информацию о приложении, его как генератор PDF файл, 1 PDF файл, имеющий 12-15 различных карт, поэтому основной метод работает 1 нить для каждой диаграммы, и внутри этой логики диаграммы мы используем singleton MySpringHelper

+2

Почему контекст приложения работает вручную, когда вы можете сделать это автоматически? –

+1

Не требует ли ваше строковое типизированное решение? Может быть, вы могли бы хотя бы сделать что-то вроде «MySpringHelper.getBean (ABC.class)»? Или используйте возможности Autowiring Spring ... –

ответ

1

Почему вы проверяете существование applicationContext? Он должен быть там, если ваш хелпер-компонент настроен в xml и имеет в нем метод setter. В этом случае нет необходимости создавать контекст приложения.

Для вашего случая, я предлагаю вам получить applicationContext, введенный Spring, а не с помощью ApplicationContextAware.

+0

добавлено описание проекта в ques, его как многопоточный проект, поэтому никто не знает, какой поток начнется первым, и инициализирует appContext ... угадывая, следовательно, чек .... – Lav

+0

так зачем Вы просто вводите applicationContext и оставляете его с весной, чтобы ввести его? – SMA

+1

@Lav, вы можете сначала запустить контекст приложения, убедиться, что он загружен (через 'org.springframework.context.ApplicationListener '), а затем начать обработку диаграмм? –

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