Important Annotations for Spring Core Tasks

This is a quick summary of important annotations in Spring for doing core tasks in Spring. Some of them might have already been covered in examples. Some of them might be covered later. Some of them might be a variation of the already covered ones, so please feel free to try them out and let us know if you face any issues.

 

@Configuration, @Bean

You can use @Configuration to specify a Java configuration file. 

A Java configuration file can be used instead of XML configuration for configuring your application.

Spring looks for methods annotated with the @Bean annotation in a class with the @Configuration annotation. 

@Bean is used to specify a bean instance definition.

Example: http://javajee.com/your-first-spring-program-using-java-configuration.

 

@Component, @Repository, @Service, @Controller and @ComponentScan

@Component can be used over a class to tell spring to consider it as a bean component. 

@ComponentScan annotation can be used to specify the packages that need to be scanned for components and is usually used along with @Configuration classes. You may also specify the same behaviour using <context:component-scan in spring xml configuration.

@Repository, @Service and @Controller can be used instead of @Component based on actual application layer you are developing. However technically all behave the same. If in doubt, use @Component.

Example (Component and ComponentScan): http://javajee.com/your-first-spring-program-using-component-and-compone....

Example (Controller and ComponentScan): http://javajee.com/factory-beans-in-spring-using-annotations-example

 

@Autowired, @Resource, @Inject, @Qualifier, @Primary

You can simply specify the @Autowired annotation over properties, setter methods and constructors. Spring will then find a bean of matching type and inject it. By default, it does autowiring by type and hence if you have two matching beans (two beans of same type), your execution will fail.

@Qualifier annotation can be used along with @Autowired to do autowiring by name. You can specify the name of the bean as @Qualifier("beanName"). 

@Primary allows to give preference to a bean when multiple beans match for autowiring.

If you are using Java configuration with @Bean annotations, you can specify the name in your @Bean annotation as @Bean(name="beanName")

@Resource and @Inject are Java specific annotations that does almost the same thing as Spring's @Autowired. However, when using @Resource, you can specify autowiring by name instead of using @Qualifier annotation.

Example (Autowired): http://javajee.com/factory-beans-in-spring-using-annotations-example

 

@Profile, @ActiveProfiles

@Profile allows to specify a profile for your bean.

Example: http://javajee.com/your-first-spring-profiles-based-program

@ActiveProfiles can be used from a JUnit test to specify the active profiles.

Example: http://javajee.com/junit-testing-of-spring-code-with-profiles-example

 

@Lazy

@Lazy allows your bean to be lazily loaded.

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) Arrays (1) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (55) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (9) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (7) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)