2013-05-14 4 views
1

У нас есть приложение с весенними бобами (3 уровня), работающее на котле, фасоль аннотируется @Autowired и обязательна.Неисправность впрыска фаз-монитора

Что мы хотели бы сделать, это отказ от работы монитора bean injection (что может указывать на проблему с развертыванием).

Я так думаю у меня есть два варианта, чтобы сделать это:

  1. Вместо использования @Autowired ТЕПЛОВОЙ НАГРУЗКИ бобов в статическом блоке, если нагрузка не может сделать что-то

  2. Код окружения с try{...} catch (NullPointerException e), так что если bean is null исключение бросается.

  3. Проверьте, если фасоль равна null на каждом методе.

Я думаю, что # 1 является самым элегантным и с наименьшим количеством добавляемого кода, но мне интересно, есть ли элегантный способ сделать это без статического блока.

Благодаря

ответ

3

Здесь есть несколько вариантов.
Моего любимое аннотировать требуемую зависимость с @Autowired(required=false), а затем в методе аннотированный с @PostConstruct тестом и обрабатывать недостающую зависимость:

... 
@Autowired(required = false) 
private Bean dependency; 

@PostConstruct 
private void init() { 
    if(dependency==null) { 
    // handle missing dependecy 
    } 
} 

Существует тихая интересная статья о проверке необходимых dendecies весной. Он немного старше, но все же полезен.
http://blog.springsource.org/2007/07/11/setter-injection-versus-constructor-injection-and-the-use-of-required/

+0

спасибо. Думаю, я предпочитаю этот –

2

я думаю, что и нужно @Autowired(required=true)

Кроме того, required истинно по умолчанию. Таким образом, любая отсутствующая зависимость вызовет предупреждение. @AutoWired

+0

требуется верно по умолчанию, и он будет бросать BeanCreationException в случае отсутствия определения соответствия не найдено –

+0

да вы правы ... я был обновляя то же самое в ответ с надлежащей ссылкой – Kshitij

+0

Так что я просто нужно попробовать/поймать BeanCreationException? –

1

Я думаю, что лучший способ - использовать инжекцию и испытание сеттера, если bean имеет значение null, когда он вводится.

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