Basic annotaions to describe a bean:
| 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.
@Autowired
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.
If there'are multiple implementation, you can use a Map to store the injected implementations.
If you have an interface named Example
public interface Example {
}
And two implementations:
@Component("foo")
public class FooExample implements Example {
}
@Component("bar")
public class BarExample implements Example {
}
You can have a map of Example
beans injected:
@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:
"foo"
->FooExample
instance"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/
Annotations
Annotation | Package | Source |
---|---|---|
@Resource | javax.annotation | Java |
@Inject | javax.inject | Java |
@Qualifier | javax.inject | Java |
@Autowired | org.springframework.bean.factory | Spring |
For example:
|
In this test I use a ‘@Qualifier’ annotation to point to the qualified name of the ‘Person’ component.
|
|
|
All of these annotations inject the ‘Person’ bean.
To add List of Beans
In this test I inject a list of beans.
|
|
|
来源:oschina
链接:https://my.oschina.net/u/2274721/blog/659651