Posts

Showing posts with the label spring

What are the design patterns used in Spring Framework?

There are loads of different design patterns used, but there are a few obvious ones: 1. Dependency Injection : which is central to the whole BeanFactory/ ApplicationContext. 2. Proxy : Used heavily in AOP (Aspect Oriented Programming) and remoting. 3. Singleton : Beans defined in Spring configuration files are singletons by default. 4. Template Method : used extensively to deal with boilerplate code such as closing connections cleanly, for example, JdbcTemplate, JmsTemplate, JpaTemplate. 5. MVC (Model View Controller) : The advantage with Spring MVC is that your controllers are POJOS as opposed to being servlets. This makes for easier testing of controllers. One thing is that hte controller is only required to return a logical view name, and the view selection is left to a separate ViewResolver. This makes it easier to reuse controllers for different view technologies. 6. Front Controller : Spring provides DispatcherServlet to ensure an incoming requests gets dispatched to yo...

How to Inject Application Context to a bean in Spring?

Some times, we need to access the Application Context in a bean itself, for example, if you want to get another bean using Application Context. Injecting Application Context to a bean is easy, your bean just has to implement ApplicationContextAware interface, ApplicationContextAware interface has a single method, which has the signature like below. public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {         // TODO Auto-generated method stub   } you have to override this method, see the example below public class A implements ApplicationContextAware {      private ApplicationContext context;      public void setApplicationContext( ApplicationContext context)      {           this.context = context;      } } That's it, now you can play with Application Context.

Difference Between Application Context and Bean Factory in Spring

Image
Even though both are responsible for bean instantiation and wiring but there are some differences between them. Bean Factory Application Context Instantiate a bean when ever required. i.e Lazy Instantiation Pre instantiate all the beans at the time of container creation Doesn't support annotation based dependency injection Supports annotation based injection Doesn't publish events to listeners Application contexts can publish events to beans that are registered as listeners Doesn't provide support for internationalization i.e i18n supports internationalization Provides Basic IOC and DI (Dependency Injection) features Application Context provides advanced features such as JNDI access, EJB integration, remoting, along with IOC and DI