Spring课程 Spring入门篇 4-9 Spring bean装配之对jsr支持的说明
1 解析
1.1 疑问:2.2去掉@resource注解,为什么不能赋值?不是有set方法了吗?
1.2 @resource注解版本支持
1.3 没有显式指定@resource的那么,默认名称从何获得?
1.4 @postConstruct 和@predestroy注解版本 支持
1.5 @named 和 @inject 依赖注入注解的 版本支持
1.6 @named解惑
2 代码演练
2.1 给变量赋值(方法一)
2.2 给变量赋值(方法二)
2.3 注解PostConstruct 和注解 PreDestroy(前置注解和后置注解)
2.4 注解@named和注解@inject的使用
2.5 注解@named
1 解析
1.1 疑问:2.2去掉@resource注解,为什么不能赋值?不是有set方法了吗?
1.2 @resource注解版本支持
支持版本 JSR-250 java567都支持
1.3 没有显式指定@resource的那么,默认名称从何获得?
属性名或者方法得出,详细参考2.1
1.4 @postConstruct 和@predestroy注解版本 支持
Spring2.5之后支持
1.5 @named 和 @inject 依赖注入注解的 版本支持
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
1.6 @named解惑
你首先要理解@Named注解是干嘛的?我们使用这个注解是来给我们注入对象的,那么@Named是JSR330中的注解,在这里它相当于@Qualifier,是用来注入在IOC容器已经存在的名称为jsrDao的bean,然而在IOC容器中并没有注册你说的jsr,自然就获取不到将会报错!
2 代码演练
2.1 给变量赋值
实体类:
package com.imooc.beanannotation.javabased; import javax.annotation.Resource; import org.springframework.stereotype.Service; @Service
public class JsrService { @Resource
private JsrDao jsrDao; // public void setJsrDao(JsrDao jsrDao) {
// this.jsrDao = jsrDao;
// } public void save(){
jsrDao.save();
}
}
测试类:
package com.imooc.test.beanannotation; import org.junit.Test; import com.imooc.beanannotation.javabased.JsrService;
import com.imooc.test.base.UnitTestBase; public class TestJsr extends UnitTestBase{ public TestJsr(){
super("classpath*:spring-beanannotation.xml");
} @Test
public void testJsr(){
JsrService jsrService =super.getbean("jsrService");
jsrService.save();
}
}
dao类:
package com.imooc.beanannotation.javabased; import org.springframework.stereotype.Repository; @Repository
public class JsrDao {
public void save(){
System.out.println("JsrDao is saving!");
}
}
xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.imooc.beanannotation"></context:component-scan> </beans>
打印日志:
四月 07, 2019 8:03:26 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5fa34e31: startup date [Sun Apr 07 20:03:26 CST 2019]; root of context hierarchy
四月 07, 2019 8:03:27 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from URL [file:/F:/xiangmu3/Xin/FuQiang/Spring/ddwei-dao/target/classes/spring-beanannotation.xml]
四月 07, 2019 8:03:27 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [config.xml]
JsrDao is saving!
四月 07, 2019 8:03:28 下午 org.springframework.context.support.ClassPathXmlApplicationContext doClose
信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@5fa34e31: startup date [Sun Apr 07 20:03:26 CST 2019]; root of context hierarchy
2.2 给变量赋值(方法二)
实体类:
package com.imooc.beanannotation.javabased; import javax.annotation.Resource; import org.springframework.stereotype.Service; @Service
public class JsrService { // @Resource
private JsrDao jsrDao; @Resource
public void setJsrDao(JsrDao jsrDao) {
this.jsrDao = jsrDao;
} public void save(){
jsrDao.save();
}
}
2.3 注解PostConstruct 和注解 PreDestroy(前置注解和后置注解)
实体类:
package com.imooc.beanannotation.javabased; import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource; import org.springframework.stereotype.Service; @Service
public class JsrService { // @Resource
private JsrDao jsrDao; @Resource
public void setJsrDao(JsrDao jsrDao) {
this.jsrDao = jsrDao;
} @PostConstruct
public void init(){
System.out.println("init method");
} @PreDestroy
public void destroy(){
System.out.println("destroy method");
} public void save(){
jsrDao.save();
}
}
打印日志:
四月 07, 2019 8:25:30 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@7c27a30c: startup date [Sun Apr 07 20:25:30 CST 2019]; root of context hierarchy
四月 07, 2019 8:25:30 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from URL [file:/F:/xiangmu3/Xin/FuQiang/Spring/ddwei-dao/target/classes/spring-beanannotation.xml]
四月 07, 2019 8:25:31 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [config.xml]
init method
JsrDao is saving!
四月 07, 2019 8:25:31 下午 org.springframework.context.support.ClassPathXmlApplicationContext doClose
信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@7c27a30c: startup date [Sun Apr 07 20:25:30 CST 2019]; root of context hierarchy
destroy method
2.4 注解@named和注解@inject的使用
实体类:
package com.imooc.beanannotation.javabased; import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Named; //@Service
@Named
public class JsrService { // @Resource
@Inject
private JsrDao jsrDao; // @Resource
public void setJsrDao(JsrDao jsrDao) {
this.jsrDao = jsrDao;
} @PostConstruct
public void init(){
System.out.println("init method");
} @PreDestroy
public void destroy(){
System.out.println("destroy method");
} public void save(){
jsrDao.save();
}
}
pom.xml
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
2.5 注解@named
实体类:
package com.imooc.beanannotation.javabased; import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Named; //@Service
@Named
public class JsrService { // @Resource
// @Inject
private JsrDao jsrDao; // @Resource
@Inject
public void setJsrDao(@Named("jsrDao")JsrDao jsrDao) {
this.jsrDao = jsrDao;
} @PostConstruct
public void init(){
System.out.println("init method");
} @PreDestroy
public void destroy(){
System.out.println("destroy method");
} public void save(){
jsrDao.save();
}
}
Spring课程 Spring入门篇 4-9 Spring bean装配之对jsr支持的说明的更多相关文章
- Spring Boot -01- 快速入门篇(图文教程)
Spring Boot -01- 快速入门篇(图文教程) 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到[慕课网]手机 app ...
- Spring实践系列-入门篇(一)
本文主要介绍了在本地搭建并运行一个Spring应用,演示了Spring依赖注入的特性 1 环境搭建 1.1 Maven依赖 目前只用到依赖注入的功能,故以下三个包已满足使用. <properti ...
- Spring Cloud Alibaba入门篇
学习条件 了解web三层架构 熟练应用SSM架构 了解Maven管理工具的使用 熟练使用SpringBoot,以及了解SpringBoot基本原理. 了解部分术语:应用.工具.耦合.负载等 温馨提示: ...
- Spring Data JPA 入门篇
Spring Data JPA是什么 它是Spring基于ORM框架(如hibernate,Mybatis等).JPA规范(Java Persistence API)封装的一套 JPA应用框架,可使开 ...
- Spring Boot源码(四):Bean装配
为了演示Spring中对象是如何创建并放到spring容器中,这里新建一个maven项目: 其中pom.xm文件中只引入了一个依赖: <dependencies> <dependen ...
- Spring课程 Spring入门篇 2-1 IOC和bean容器
课程链接: 本节讲了5部分内容,6为项目demo: 1 接口及面向接口编程 2 什么是IOC 3 Spring的bean配置 4 Bean的初始化 5 Demo 自己理解: 1 高层模块和底层模块都依 ...
- spring boot 学习入门篇【spring boot项目的搭建以及如何加载jsp界面】
[ 前言] Spring Boot 简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置, ...
- spring boot(一):入门篇
构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- Spring Boot(一):入门篇+前端访问后端
转自:Spring Boot(一):入门篇 什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发 ...
随机推荐
- http2.2使用ajp与tomcat集成
环境 1.CENTOS 6.5 2.yun安装的httpd,版本是2.2 3.tomcat版本8.5.28 操作 关闭8080端口连接,打开8009端口修改tomcat_home/conf/serve ...
- hdp 2.06 安装备忘
1,官方安装说明文档 http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.6.0-Win/bk_installing_hdp_for_windo ...
- XAF对Attribute的总结
[Aggregated] 没有参数,作用于a property or a field,并且只能是持久类的引用或者XPCollection.实现两个持久类的级联删除的功能. [Association(& ...
- Qt 学习之路 2(73):Qt 线程相关类
Home / Qt 学习之路 2 / Qt 学习之路 2(73):Qt 线程相关类 Qt 学习之路 2(73):Qt 线程相关类 豆子 2013年11月26日 Qt 学习之路 2 7条评论 希 ...
- Domoticz 中添加彩云天气
前言 用过一段时间的彩云天气 APP,最吸引我的地方是精确到局部区域的天气预测,虽然准确度并不算高,但是对于预测下雨还是不错的选择.在 Domoticz 中添加彩云天气的数据,利用的是彩云天气提供的 ...
- mfix的Negative gas density报错解决
错误很难定位,因为编译正常,而是运行过程中会告知出现Negative gas density,并且不收敛,没有其他错误信息.最后通过一步步定位发现是由于 IC_EP_g(1) < EP_star ...
- Visual Studio Ultimate 2013 免费下载地址
ed2k://|file|cn_visual_studio_2010_ultimate_x86_dvd_532347.iso|2685982720|4AE6228933DDE49D9BFA4C3467 ...
- 应大数据时代而写了个磁力搜索的网页- WWW.MOVIH.COM 磁力
应大数据时代而写了个磁力搜索的网页- 索马里搜索磁力 http://www.,movih.com/ BT磁力示例网站:WWW.MOVIH.COM 采用分布式架构: JAVA系统:JBOSS7+EJB3 ...
- FJOI2019划水记
Day 0 和 $crk$ 神仙颓废 $crk$ 雀魂一位率 $40%$ $orz$,不知道的人怕不是以为开小号 晚上想早点睡觉,从 9 点躺到 12 点才睡着 Day 1 反正划水,心态良好,全写暴 ...
- oracle 基础知识(七)----动态性能视图
一,动态性能视图介绍 动态性能视图属于数据字典,系统管理员用户 SYS 可以访问它们.在数据库打开和使用时不断进行更新,而且它们的内容主要与性能有关.虽然这些视图很像普通的数据库表,但它们不允许用户直 ...