Spring入门篇 学习笔记

@Resource

Spring 还支持使用 JSR-250 中的 @Resource 注解的变量或 setter 方法

@Resource 有一个 name 属性,并且默认 Spring 解释该值作为被注入 bean 的名称

public class SimpleMovieLister{
private MovieFinder movieFinder; @Resource(name="myMovieFinder")
public void setMovieFinder(MovieFinder movieFinder){
this.movieFinder = movieFinder;
}
}

如果没有显式指定 @Resource 的 name,默认名称 是从属性名或 setter 方法得出

注解提供的名字被解析为一个 bean 的名称,这是由 ApplicationContext 中的 CommonAnnotationBeanPostProcessor 发现并处理的

CommonAnnotationBeanPostProcessor 不仅能识别 JSR-250 中的生命周期注解 @Resource,在Spring 2.5 中引入支持初始化回调和销毁回调,前提是 CommonAnnotationBeanPostProcessor 是在 Spring 的 ApplicationContext 中注册的

public class CachingMovieLister{

	@PostConstruct
public void popularMovieCache(){ } @PreDestory
public void clearMovieCache(){ } }

示例

添加类:

@Repository
public class JsrDAO { public void save() {
System.out.println("JsrDAO invoked.");
} } @Service
public class JsrServie { @Resource
private JsrDAO jsrDAO; // @Resource
public void setJsrDAO(JsrDAO jsrDAO) {
this.jsrDAO = jsrDAO;
} @PostConstruct
public void init() {
System.out.println("JsrServie init.");
} @PreDestroy
public void destroy() {
System.out.println("JsrServie destroy.");
} public void save() {
jsrDAO.save();
} }

添加测试类:

@RunWith(BlockJUnit4ClassRunner.class)
public class TestJsr extends UnitTestBase { public TestJsr() {
super("classpath*:spring-beanannotation.xml");
} @Test
public void testSave() {
JsrServie service = getBean("jsrServie");
service.save();
} }

JSR330 标准注解

从 Spring 3.0 开始支持 JSR330 标准注解(依赖注入注解),其扫描方式与 Spring 注解一致

使用 JSR330 需要依赖 javax.inject 包

@Inject

@Inject 等效于 @Autowired,可以使用于类、属性、方法、构造器

@Named

  • 如果想使用特定名称 进行依赖注入,使用 @Named
  • @Named 与 @Component 是等效的

示例

添加 Maven 引用:

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

修改 JsrServie 类:

//@Service
@Named
public class JsrServie { // @Resource
// @Inject
private JsrDAO jsrDAO; // @Resource
@Inject
public void setJsrDAO(@Named("jsrDAO") JsrDAO jsrDAO) {
this.jsrDAO = jsrDAO;
} @PostConstruct
public void init() {
System.out.println("JsrServie init.");
} @PreDestroy
public void destroy() {
System.out.println("JsrServie destroy.");
} public void save() {
jsrDAO.save();
} }

源码:learning-spring

学习 Spring (十一) 注解之 Spring 对 JSR 支持的更多相关文章

  1. spring mvc注解和spring boot注解

    1 spring mvc和spring boot之间的关系 spring boot包含spring mvc.所以,spring mvc的注解在spring boot总都是可以用的吗? spring b ...

  2. mybatis学习(十一)——springmvc++spring+mybatis整合

    做任何一个项目都以一个需求,这里先定义一下需求:利用三大框架查询酒店列表. 一.搭建开发环境 1.创建一个web项目 我这里用的是 jdk1.8+tomact7.0 2.创建hotel表 CREATE ...

  3. Spring @Value注解 and Spring Boot @ConfigurationProperties注解

    一.Spring的@Value Spring EL表达式语言,支持在XML和注解中表达式,类是于JSP的EL表达式语言. 在Spring开发中经常涉及调用各种资源的情况,包含普通文件.网址.配置文件. ...

  4. [spring]基于注解的spring配置

    Spring是一个基于IOC和AOP的结构J2EE系统的框架 IOC 反转控制 是Spring的基础,Inversion Of Control 简单说就是创建对象由以前的程序员自己new 构造方法来调 ...

  5. spring aop使用,spring aop注解,Spring切面编程

    ================================ ©Copyright 蕃薯耀 2020-01-21 https://www.cnblogs.com/fanshuyao/ 一.第一步, ...

  6. Spring MVC 注解[转]

    [学习笔记]基于注解的spring3.0.x MVC学习笔记(九) 摘要: 本章节,仅为@SessionAttributes的功能扩展介绍介绍,结合@requestparam注解进行简易无数据库分页. ...

  7. spring+mybatise注解实现

    spring+mybatise注解实现 spring.jpa.database=MYSQL spring.datasource.type=com.alibaba.druid.pool.DruidDat ...

  8. 死磕Spring之AOP篇 - Spring 事务详解

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...

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

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

随机推荐

  1. python:while循环、运算符、初始编码

    while循环 while -- 关键字 while 条件: 缩进代码块 以上循环是(死循环) 终止循环的方法 1.break 跳出循环,并且把循环给干掉了 2.continue 跳出本次循环,继续下 ...

  2. UI 前端参考

    :http://amazeui.org/ :http://www.dcloud.io/index.html :https://weui.io/ :http://m.sui.taobao.org/get ...

  3. python--迭代器(Iterator)

    博客地址:http://www.cnblogs.com/yudanqu/ 1.可迭代对象 在介绍迭代器之前呢,我们先聊一下可迭代对象(Iterable),可迭代对象就是可以直接作用于for循环的对象. ...

  4. 从 0 到 1 实现 React 系列 —— 4.setState优化和ref的实现

    看源码一个痛处是会陷进理不顺主干的困局中,本系列文章在实现一个 (x)react 的同时理顺 React 框架的主干内容(JSX/虚拟DOM/组件/生命周期/diff算法/setState/ref/. ...

  5. Class AtomicInteger

    Overview Package Class Use Tree Deprecated Index Help Java™ PlatformStandard Ed. 7 Prev Class Next C ...

  6. WebPack牛刀小试

    现在页面的功能和需求越来越复杂,繁复杂乱的JavaScript代码和一大堆的依赖包都需要包含在前端页面中.如果还用手动处理就有点像在现代战场上使用小米加步枪的味道了. 为了减小开发的复杂度,前端社区涌 ...

  7. 百度地图开发者API学习笔记二

    一,地图上多个覆盖物(Marker). 当有多个覆盖物时,我们需要获取每个点的信息.如下图,每个Marker的经度都不相同 二,代码: <!DOCTYPE html> <html&g ...

  8. from、where、group、with、having、order、union、limit 的使用

    顺序很重要 每次看数据库的一些语法时,都很自然的略过那一大堆的规则,比如说线下面这段select的语法: select [field1,field2...] func_namefrom table1, ...

  9. ESLint常见命令(规则表)

    1 禁用 ESLint: /* eslint-disable */ ; console.log(a); /* eslint-enable */ 2 禁用一条规则: /*eslint-disable n ...

  10. C#设计模式之6:抽象工厂模式

    前面分析了简单工厂模式和工厂方法模式,接着来看一下抽象工厂模式,他与工厂方法模式有一些相似的地方,也有不同的地方. 先来看一个不用工厂方法模式实现的订购披萨的代码: 对象依赖的问题:当你直接实例化一个 ...