1.使用@Inject和@Named进行依赖注入

(1) Spring提供了对JSR 330标准注解的支持,因此我们也可以使用JSR 330标准注解来进行依赖注入,不过,在此之前,我们得先使用maven添加相关依赖,如下

<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>

(2) JSR 330标准注解提供了@Inject注解进行依赖注入,它的作用同@Autowired,我们可以将它用于变量,方法或构造函数参数上,如下

@Component
public class ExampleA { //使用@Inject注解,来进行依赖项的注入,它的作用跟@Autowired是完全一样的,只不过它是java提供的注解,Spring对其作了实现
@Inject
private ExampleB exampleB; private ExampleC exampleC; @Inject
public ExampleA(ExampleC exampleC) {
this.exampleC = exampleC;
}
}

(3) @Named注解的作用同@Qualifier注解,也是指定候选的bean的名称,排除其他依赖项的干扰

@Component
public class ExampleA { //使用@Named注解标识候选bean的名称,如果容器中存在多个ExampleB实例,则选择其中bean的名称为exampleB的那个bean进行注入
@Inject
@Named("exampleB")
private ExampleB exampleB;
}

2.@Named注解与@ManagedBean注解

(1) @Named注解与JSR 250中的注解@ManagedBean可以用来替换掉@Component注解,如下

//使用@Named注解定义一个bean,没错,@Named注解还可用在类上,用于声明一个bean,下面这个例子等同于@Component("aaa")
@Named("aaa")
public class ExampleA { } //此外,我们还可以用@ManagedBean注解来声明一个bean
@ManagedBean("bbb")
public class ExampleB { } //开启注解扫描,则Spring也会把被@Named注解与@ManagedBean注解标注的bean添加至容器中
@Configuration
@ComponentScan(basePackages = "cn.example.spring.boke")
public class Config { }

(2) @Component注解可以组合衍生出其他注解,如@Service,@Controller注解等,而@Named注解与@ManagedBean注解不具备这一功能

Spring IOC官方文档学习笔记(十一)之使用JSR 330标准注解的更多相关文章

  1. Spring IOC官方文档学习笔记(三)之依赖项

    1.依赖注入 (1) 依赖注入(DI)的概念:某个bean的依赖项,由容器来负责注入维护,而非我们自己手动去维护,以此来达到bean之间解耦的目的,如下 //情况一:不使用依赖注入 public cl ...

  2. Spring IOC官方文档学习笔记(二)之Bean概述

    1.Bean概述 (1) Spring IoC容器管理一个或多个bean,这些bean是根据我们所提供的配置元数据来创建的,在容器内部,BeanDefinition对象就代表了bean的配置元数据,它 ...

  3. Spring IOC官方文档学习笔记(一)之IOC容器概述

    1.IOC容器简介 (1) org.springframework.beans 与 org.springframework.context 这两个包是Spring IOC容器的基础,在org.spri ...

  4. Spring 4 官方文档学习(十一)Web MVC 框架

    介绍Spring Web MVC 框架 Spring Web MVC的特性 其他MVC实现的可插拔性 DispatcherServlet 在WebApplicationContext中的特殊的bean ...

  5. Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC

    内容列表: 启用MVC Java config 或 MVC XML namespace 修改已提供的配置 类型转换和格式化 校验 拦截器 内容协商 View Controllers View Reso ...

  6. Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图

    接前面的Spring 4 官方文档学习(十一)Web MVC 框架,那篇太长,故另起一篇. 针对web应用的所有的MVC框架,都会提供一种呈现views的方式.Spring提供了view resolv ...

  7. Spring 4 官方文档学习(十一)Web MVC 框架之编码式Servlet容器初始化

    在Servlet 3.0+ 环境中,你可以编码式配置Servlet容器,用来代替或者结合 web.xml文件.下面是注册DispatcherServlet : import org.springfra ...

  8. Spring 4 官方文档学习(十一)Web MVC 框架之HTTP caching support

    一个良好的HTTP缓存策略可以显著地增进web应用的性能和其客户端的体验.主要使用"Cache-Control" HTTP response header来完成,配合conditi ...

  9. Spring 4 官方文档学习(十一)Web MVC 框架之约定优于配置

    当返回一个ModelAndView时,可以使用其addObject(Object obj)方法,此时的约定是: An x.y.User instance added will have the nam ...

  10. Spring 4 官方文档学习(十一)Web MVC 框架之异常处理

    1.HandlerExceptionResolver Spring HandlerExceptionResolver的实现们会处理controller执行过程中发送的unexpected except ...

随机推荐

  1. 基于python的数学建模---蒙特卡洛算法

    import math import random m = input('请输入一个较大的整数') n = 0 for i in range(int(m)): x = random.random() ...

  2. i春秋Do you know upload?

    打开题目是一个文件上传,就先写了一个一句话木马的php文件,直接提交显示文件类型不允许.于是乎将其改为jpeg格式上传,成功了,但是没用,菜刀连不上.再次上传jpg格式的一句话木马(写好php木马后将 ...

  3. (C++) C++ template笔记 -- template关键字及typename关键字

    在调用C++ template函数时,有时候语法会存在歧义. 调用函数时,使用 obj.template func<...>() 形式的语法,避免歧义: 调用类型时,使用嵌入子类型时,使用 ...

  4. Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hosts.

    $git push origin master 报错: Warning: Permanently added the RSA host key for IP address '192.30.253.1 ...

  5. 【Java EE】Day08 HTML&CSS

    一.表单 1.概述 采集数据,与服务器交互包括 form表单,需要提交则必须设置name属性,action方式主要包 get:参数会在地址栏显示(请求行),长度有限 post:参数被封装在请求体,参数 ...

  6. 三道MISC的writeup

    (1)背时 描述:腐烂了,变异了,太背时了...... 附件为一个压缩包 解题思路: 1.打开压缩包,发现有一个描述:v(51wA:I7uABi#Bx(T 2.将v(51wA:I7uABi#Bx(T进 ...

  7. VRRP原理和实战

    一.VRRP基本概述 ·VRRP能够在不改变组网的情况中,将多台路由器虚拟成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关,实现网关的备份. ·协议版本:VRRPv2(常用)和VRRPv3 · ...

  8. 「Docker学习系列教程」9-Docker容器数据卷介绍

    通过前面8篇文章的学习,我们已经学会了docker的安装.docker常用的命令已经docker镜像修改后提交的远程镜像仓库及提交到公司的私服仓库中.接下来,我们再来学学Docker另外一个重要的东西 ...

  9. “喜提”一个P2级故障—CMSGC太频繁,你知道这是什么鬼?

    大家好,我是陶朱公Boy. 背景 今天跟大家分享一个前几天在线上碰到的一个GC故障- "CMSGC太频繁". 不知道大家看到这条告警内容后,是什么感触?我当时是一脸懵逼的,一万个为 ...

  10. [OpenCV实战]50 用OpenCV制作低成本立体相机

    本文主要讲述利用OpenCV制作低成本立体相机以及如何使用OpenCV创建3D视频,准确来说是模仿双目立体相机,我们通常说立体相机一般是指双目立体相机,就是带两个摄像头的那种(目就是指眼睛,双目就是两 ...