Spring In JAVA

Spring is grate framework for development of Enterprise grade applications.

What is Spring?

Spring is great framework for development of Enterprise grade applications. Spring is a light-weight framework for the development of enterprise-ready applications. Spring can be used to configure declarative transaction management, remote access to your logic using RMI or web services, mailing facilities and various options in persisting your data to a database. Spring framework can be used in modular fashion, it allows to use in parts and leave the other components which is not required by the application.
Features of Spring Framework:

  • Transaction Management: Spring framework provides a generic abstraction layer for transaction management. This allowing the developer to add the pluggable transaction managers, and making it easy to demarcate transactions without dealing with low-level issues. Spring's transaction support is not tied to J2EE environments and it can be also used in container less environments.
     
  • JDBC Exception Handling: The JDBC abstraction layer of the Spring offers a meaningful exception hierarchy, which simplifies the error handling strategy
     
  • Integration with Hibernate, JDO, and iBATIS: Spring provides best Integration services with Hibernate, JDO and iBATIS.
     
  • AOP Framework: Spring is best AOP framework
     
  • MVC Framework: Spring comes with MVC web application framework, built on core Spring functionality. This framework is highly configurable via strategy interfaces, and accommodates multiple view technologies like JSP, Velocity, Tiles, iText, and POI. But other frameworks can be easily used instead of Spring MVC Framework..
    Spring Architecture
    Spring is well-organized architecture consisting  of seven modules. Modules in the Spring framework are:
    1. Spring AOP
      One of the key components of Spring is the AOP framework. AOP is used in Spring:
      • To provide declarative enterprise services, especially as a replacement for EJB declarative services. The most important such service is declarative transaction management, which builds on Spring's transaction abstraction.
      • To allow users to implement custom aspects, complementing their use of OOP with AOP
    2. Spring ORM
      The ORM package is related to the database access. It provides integration layers for popular object-relational mapping APIs, including JDO, Hibernate and iBatis.
        
    3. Spring Web
      The Spring Web module is part of Spring?s web application development stack, which includes Spring MVC.
       
    4. Spring DAO
      The DAO (Data Access Object) support in Spring is primarily for standardizing the data access work using the technologies like JDBC, Hibernate or JDO.
       
    5. Spring Context
      This package builds on the beans package to add support for message sources and for the Observer design pattern, and the ability for application objects to obtain resources using a consistent API.
        
    6. Spring Web MVC
      This is the Module which provides the MVC implementations for the web applications.
        
    7. Spring Core
      The Core package is the most import component of the Spring Framework.
      This component provides the Dependency Injection features. The BeanFactory  provides a factory pattern which separates the dependencies like initialization, creation and access of the objects from your actual program logic.
    The following diagram represents the Spring Framework Architecture



    Also Read :
    Spring 2.5
    Spring 3
    ---------------------------------------------------------------------------------------------------------------------------------
    Some Spring Interview Questions
    1.  What is IOC (or Dependency Injection)?

    The basic concept of the Inversion of Control pattern (also known as dependency injection) is that you do not create your objects but describe how they should be created. You don't directly connect your components and services together in code but describe which services are needed by which components in a configuration file. A container (in the case of the Spring framework, the IOC container) is then responsible for hooking it all up.

    i.e., Applying IoC, objects are given their dependencies at creation time by some external entity that coordinates each object in the system. That is, dependencies are injected into objects. So, IoC means an inversion of responsibility with regard to how an object obtains references to collaborating objects.
    -----------------------------------------------------------------------------------------------------------------------------------

    2. What is Application Context?
    A bean factory is fine to simple applications, but to take advantage of the full power of the Spring framework, you may want to move up to Springs more advanced container, the application context. On the surface, an application context is same as a bean factory.Both load bean definitions, wire beans together, and dispense beans upon request. But it also provides:
    • A means for resolving text messages, including support for internationalization.
    • A generic way to load file resources.
    • Events to beans that are registered as listeners.  
    -----------------------------------------------------------------------------------------------------------------------------------

    3. What is the difference between Bean Factory and Application Context ?  
    On the surface, an application context is same as a bean factory. But application context offers much more..
    • Application contexts provide a means for resolving text messages, including support for i18n of those messages.
    • Application contexts provide a generic way to load file resources, such as images.
    • Application contexts can publish events to beans that are registered as listeners.
    • Certain operations on the container or beans in the container, which have to be handled in a programmatic fashion with a bean factory, can be handled declaratively in an application context.
    • ResourceLoader support: Spring’s Resource interface us a flexible generic abstraction for handling low-level resources. An application context itself is a ResourceLoader, Hence provides an application with access to deployment-specific Resource instances.
    • MessageSource support: The application context implements MessageSource, an interface used to obtain localized messages, with the actual implementation being pluggable

      No comments:

      Post a Comment