文档章节

Spring and Springboot annotations for DI

ancient_wind
 ancient_wind
发布于 2016/04/14 18:28
字数 367
阅读 117
收藏 1

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

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;
ancient_wind
粉丝 2
博文 15
码字总数 7895
作品 0
大兴
程序员
私信 提问
加载中
此博客有 1 条评论,请先登录后再查看。
SpringBoot document notes

图片拷贝不过来,直接从github上下载 。 链接: https://github.com/DFX339/SpringBootDocumentNotes.git Create a example pom.xml Controller: The defferent between @RestController and......

osc_xgtks7bb
2018/04/19
5
0
SpringBoot简介

1、SpringBoot是什么? 在Spring框架这个大家族中,产生了很多衍生框架,比如 Spring、SpringMvc框架等,Spring的核心内容在于控制反转(IOC)和依赖注入(DI),所谓控制反转并非是一种技术,而是...

凌康乾
02/07
9
0
springboot(一).初识springboot以及基本项目搭建

初识springboot 以及基本项目搭建 由于新的项目需要搭建后台框架,之前的springmvc架构也使用多次,在我印象中springboot的微服务架构更轻量级更容易搭建,所以想去试试springboot的项目搭建...

osc_kiqfrd7o
2018/07/05
16
0
Spring Boot/Spring Cloud

104.什么是 spring boot? 在Spring框架这个大家族中,产生了很多衍生框架,比如 Spring、SpringMvc框架等,Spring的核心内容在于控制反转(IOC)和依赖注入(DI),所谓控制反转并非是一种技术,...

osc_xbmy69c2
2019/03/11
6
0
SpringBoot入门学习

              SpringBoot入门学习 什么是SpringBoot:   1.Spring Boot是其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而...

osc_kalanll2
2019/09/15
2
0

没有更多内容

加载失败,请刷新页面

加载更多

YGC问题排查,又让我涨姿势了!

在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在Stop The World问题,因此很容易导致服务超时...

erlieStar
昨天
0
0
碰上这4种项目经理,项目必死无疑

项目经理不是谁想当就能当的,除了精通业务,至少懂一些基础的技术知识外,还要拥有“项目经理式的人格”。 比如:任务导向、目标意识、高效、灵活、计划性强等。 而与之相对的,有四种类型的...

logiter
2019/12/20
0
0
Oracle 11g 数据库的部署

新手入门之Oracle 11g部署 Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目...

开源仔
9分钟前
0
1
整理 Linux下列出目录内容的命令

在 Linux 中,有非常多的命令可以让我们用来执行各种各样的任务。当我们想要像使用文件浏览器一样列出一个目录下的内容时,大家第一时间想到的是 ls 命令。但只有 ls 命令能实现这个目的吗?...

osc_q7wo0k6s
9分钟前
0
0
漫画:什么是SnowFlake算法?

本文转载自公众号 [程序员小灰] ————— 第二天 ————— 方法一:UUID UUID是通用唯一识别码 (Universally Unique Identifier),在其他语言中也叫GUID,可以生成一个长度32位的全局唯一...

无敌码龙
2019/03/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部