Spring Annotation Tutorial

@Component :       

It is generic  stereotype for any spring managed component. While other stereotypes like @Repository, @Controller, @Service are specialized form of @Component for specific use. Specilized form of stereotypes(e.g. @Controller) should take precedence over @Component as it will have extra benifit of pointcuts, better suited for processing by spring tools. Since Spring 2.5.

@Repository :

Specialized form of @Component. This annotation work as marker for any class which fulfills the role of repository or Data Access  Object(Persistent Layer). Since Spring 2.0

@Controller :

Specialized form of @Component and applied to Presentation Layer.

@Service :

Specialized form of @Component and applied to Service Layer.

@Configuration :

@Configuration annotated class are same like old XML file where we used to define beans. @Configuration is configuring the beans using Java classes. Each @Configuration annotated class is a configuration in its own. @Configuration can be used in conjuction with @Bean to create beans. Java class annotated with @Configuration will have methods to instantiated and configure the dependencies. Such methods will be annotated with @Bean.  @Configuration annotated classes consist principally of @Bean-annotated methods that define instantiation, configuration, and initialization logic for objects that will be managed by the Spring IoC container.

@Configuration
public class SessionFactoryConfiguration {

   @Bean
   public DataSource dataSource() {
     DataSource dataSource = new OracleDataSource();
     dataSource.setURL();
     dataSource.setUser();
     return dataSource;
   }

   @Bean
   public SessionFactory sessionFactory() {
     SessionFactory sessionFactory
                = new SessionFactory();
     sessionFactory.setDataSource(dataSource());
     sessionFactory.setShowSql(true);
     return sessionFactory;
   }

}

@Bean

It is a method level annotation which work with @Configuration as mentioned above. It is same like <bean> element in XML configuration. It can also be used in Component Class(Annotated with @Configuration).

@Configuration
public class AppConfig {

    @Bean
    public ContactService contactService() {
        return new ContactServiceImpl();
    }

Above configuration is same as

<beans>
    <bean name="contactService" class="com.ContactServiceImpl"/>
</beans>

@Scope

Every dean defined in IoC container needs to have a scope, default scope is Singleton. @Scope is used in order to specify the scope of Beans defined with @Bean annotation. StandardScopes class is there to define all 4 type of scope.

@Configuration
public class MyConfiguration {
    @Bean
    @Scope(StandardScopes.PROTOTYPE)
    public ContactService contactService() {

    }
}

@DependsOn

@Primary

@Lazy

@Import

@ImportResource

@Value

private @Value("#{jdbcProperties.url}") String jdbcUrl;

To get this work you need to add property file in application context XML.

<util:properties id="jdbcProperties" location="classpath:jdbc.properties"/>

2 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

slot gacor slot gacor slot gacor slot gacor slot gacor slot gacor slot gacor slot gacor slot gacor slot gacor slot gacor slot gacor slot gacor toto slot toto slot toto slot situs slot toto slot toto slot toto slot toto slot toto slot toto slot toto slot toto slot toto slot toto slot bengbengtoto