Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best Practise of injecting applicationContext in Spring3

As in the title above, I am confused about pros cons between injecting applicationContext by directly @Autowired annnotation or implementing ApplicationContextAware interface in a singleton spring bean.

Which one do you prefer in which cases and why? Thanks.

like image 256
javatar Avatar asked Mar 11 '12 19:03

javatar


People also ask

Does ApplicationContext support internationalization?

The ApplicationContext interface extends an interface called MessageSource , and therefore provides internationalization (i18n) functionality.

Which is the implementation class of ApplicationContext interface?

ApplicationContext Implementation Classes Containers are as follows: AnnotationConfigApplicationContext container. AnnotationConfigWebApplicationContext. XmlWebApplicationContext.

What is the role of ApplicationContextAware in spring to perform dependency injection?

The ApplicationContextAware Interface Spring provides an ApplicationContextAware interface that allows beans access to the ApplicationContext . This interface provides a single setApplicationContext method.


1 Answers

Actually, both are bad. Both of them tie your application to the Spring framework, thus inverting the whole inversion-of-control concept. In an ideal world, your application should not be aware of being managed by an ApplicationContext at all.

Once you have chosen to violate this principle, it doesn't really matter how you do it. ApplicationContextAware is the legacy version that has been around at least since Version 2.0. @Autowired is a newer mechanism but they work in pretty much the same way. I'd probably go with ApplicationContextAware, because it semantically makes clear what it is about.

like image 199
Sean Patrick Floyd Avatar answered Oct 13 '22 23:10

Sean Patrick Floyd