Spring and Springboot annotations for DI
Spring and Springboot annotations for DI
ancient_wind 发表于2年前
Spring and Springboot annotations for DI
  • 发表于 2年前
  • 阅读 86
  • 收藏 1
  • 点赞 1
  • 评论 1

新睿云服务器60天免费使用,快来体验!>>>   

摘要: Basic annotations for DI

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.

 

spring @Autowired @Qualifier @Resource

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:

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.

To add List of Beans

In this test I inject a list of beans.

@Resource
private List<Party> parties;
@Autowired
private List<Party> parties;
@Inject
private List<Party> parties;
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 2
博文 15
码字总数 7895
评论 (1)
ancient_wind
for basic REST: http://spring.io/understanding/REST
×
ancient_wind
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: