Basic annotaions to describe a bean:java
| Annotation | Meaning | +------------+-----------------------------------------------------+ | @Component | generic stereotype for any Spring-managed component | | @Repository| stereotype for persistence layer | | @Service | stereotype for service layer | | @Controller| stereotype for presentation layer (spring-mvc) |
The above annotations can have a optional element: String value. The value may indicate a suggestion for a logical component name, to be turned into a Spring bean in case of an autodetected component.web
@Autowiredspring
Marks a constructor, field, setter method or config method as to be autowired by Spring's dependency injection facilities.
If autowire for an interface, it will search for the implementation and inject it.spring-mvc
If there'are multiple implementation, you can use a Map to store the injected implementations.mvc
If you have an interface named Example
this
public interface Example { }
And two implementations:spa
@Component("foo") public class FooExample implements Example { } @Component("bar") public class BarExample implements Example { }
You can have a map of Example
beans injected:code
@Component public class ExampleConsumer { private final Map<String, Example> examples; @Autowired public ExampleConsumer(Map<String, Example> examples) { this.examples = examples; } }
In this case the map will contain two entries:component
"foo"
-> FooExample
instanceorm
"bar"
-> BarExample
instance
@Qualifier
Use with @AutowiredThis annotation may be used on a field or parameter as a qualifier for candidate beans when autowiring. It may also be used to annotate other custom annotations that can then in turn be used as qualifiers.
http://ljhzzyx.blog.163.com/blog/static/38380312201371385956237/
@Autowired: inject by type defaultly;
@Resource: inject by name defaultly.
Spring Injection with @Resource, @Autowired and @Inject
http://blogs.sourceallies.com/2011/08/spring-injection-with-resource-and-autowired/
Annotation | Package | Source |
---|---|---|
@Resource | javax.annotation | Java |
@Inject | javax.inject | Java |
@Qualifier | javax.inject | Java |
@Autowired | org.springframework.bean.factory | Spring |
For example:
package com.sourceallies.person; ... ("personBean") @Component @Qualifier("personBean") public class Person implements Party { } |
In this test I use a ‘@Qualifier’ annotation to point to the qualified name of the ‘Person’ component.
@Resource @Qualifier("personBean") private Party party; |
@Autowired @Qualifier("personBean") private Party party; |
@Inject @Qualifier("personBean") private Party party; |
All of these annotations inject the ‘Person’ bean.
In this test I inject a list of beans.
@Resource private List<Party> parties; |
@Autowired private List<Party> parties; |
@Inject private List<Party> parties; |