Spring_02 注入类型值、利用引用注入类型值、spring表达式、与类相关的注解、与依赖注入相关的注解、注解扫描
注意:注入基本类型值在本质上就是依赖注入,而且是利用的set方式进行的依赖注入
1 注入基本类型的值
<property name="基本类型的成员变量名" value="值"/>
2 注入集合类型的值(直接注入)
2.1 注入list类型的值
<property name="interest">
<list>
<value>钓鱼</value>
<value>做饭</value>
<value>看电视</value>
<value>看电视</value>
</list>
</property>
注入list类型的配置文件格式
2.2 注入set类型的值
<property name="city">
<set>
<value>北京</value>
<value>长沙</value>
<value>武汉</value>
<value>武汉</value>
</set>
</property>
注入set类型的配置文件格式
2.3 注入map类型的值
<property name="score">
<map>
<entry key="英语" value="80"/>
<entry key="math" value="90"/>
</map>
</property>
注入map类型的配置文件格式
2.4 注入properties类型的值
<property name="db">
<props>
<prop key="username">King</prop>
<prop key="password">1234</prop>
</props>
</property>
注入properties类型的配置文件格式
3 注入集合类型的值(利用引用注入)
<util:list id="interestBean">
<value>游泳</value>
<value>台球</value>
<value>编程</value>
</util:list>
<util:set id="cityBean">
<value>北京</value>
<value>长沙</value>
<value>南昌</value>
</util:set>
<util:map id="scoreBean">
<entry key="english" value="80"/>
<entry key="math" value="90"/>
</util:map>
<util:properties id="dbBean">
<prop key="username">Sally</prop>
<prop key="password">1234</prop>
</util:properties>
<!--
以引用的方式注入集合类型的值。
-->
<bean id="vb2" class="value.ValueBean">
<property name="interest"
ref="interestBean"/>
<property name="city"
ref="cityBean"/>
<property name="score"
ref="scoreBean"/>
<property name="db"
ref="dbBean"/>
</bean>
利用引用给集合类型注入值的配置文件格式
4 利用注解进行简化配置
4.1 与类有关的4个注解
@respository("id属性值") -> 用于持久层
@controller("id属性值") -> 用于控制层
@service("id属性值") -> 用于服务层
@component("id属性值") -> 通吃
注意:id属性值 一般是 类的首字母小写后的结果
4.2 其他注解
@Scope("singleton") -->> 设置作用域
@Lazy(true) -->> 设置延迟加载
@PostConstruct -->> 设置初始化方法
@PreDestroy -->> 设置销毁方法
@Value("warrior") -->> 给成员变量注入值
5 使用spring表达式去读取其他bean的属性
<bean id="sb1" class="value.SpelBean">
<property name="name"
value="#{vb1.name}"/>
<property name="interest"
value="#{vb1.interest[1]}"/>
<property name="score"
value="#{vb1.score['英语']}"/>
<property name="pageSize"
value="#{config['jdbc.pagesize']}"/>
</bean>
spring表达式
6 依赖注入
6.1 @Autowired 和 @Qualifier("student")
直接将这两行写到 注入变量上面就行啦;支持 set注入 和 构造器注入
6.2 @Resource(name="student") -->> 一般都用这个
Resource 的包在 servlet-api.jar,所以需要配置一下运行环境;只支持 构造器注入
Tomcat的运行环境自带了 servlet-api.jar 这个包,这个包里面就有使用Resource注解时需要的jar包
如果运行环境不是Tomcat,那么就需要单独导入Resource注解需要的那个jar包,这个jar包是:javax.annotation-api
图解:需要将B依赖注入到A中,在A中需要添加一个类型是B的成员变量,在该成员变量上面添加依赖注解@Resource(name="B的id")即可;不需要在A中为该成员变量实现set方法或者有参构造器(依赖注入的有参构造器),容器如果用到set方法或者有参构造器时它自己会想办法得到的,但是B中必须实现无参构造器,因为spring容器在创建实例时必须用到无参构造器。
7 使用了注解后必须在spring配置文件中配置注解扫描
注解扫描
容器会扫描指定包及其子包下面的所有的类,如果类前面添加了特定的注解(比如@Component),则容器会将这个类纳入容器进行管理(相当于配置了一个bean,其中,bean的id默认值等于首字母小写之后的类名)
<context:component-scan base-package="annotation"/>
本博客源代码:点击前往
Spring_02 注入类型值、利用引用注入类型值、spring表达式、与类相关的注解、与依赖注入相关的注解、注解扫描的更多相关文章
- Spring专题2: DI,IOC 控制反转和依赖注入
合集目录 Spring专题2: DI,IOC 控制反转和依赖注入 https://docs.spring.io/spring/docs/2.5.x/reference/aop.html https:/ ...
- Spring-Context的注解实现依赖注入功能
使用Spring-Context的注解实现依赖注入功能. Demo要点: 本例子中主要使用Annotation功能来实现对MoviceService的注入.我们将Cinema.java的头部标注为@C ...
- 07 Spring框架 依赖注入(四)基于注解的依赖注入
前面几节我们都在使用xml进行依赖的注入,但是在实际的开发中我们往往偏爱于使用注解进行依赖注入,因为这样更符合我们人的思维,并且更加快捷,本节就来讲述Spring基于注解的依赖注入: 信息注入注解 @ ...
- Spring的控制反转(IOC)和依赖注入(DI)具体解释
Spring的控制反转(IOC)和依赖注入(DI)具体解释 首先介绍下(IOC)控制反转: 所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的.这样控制器就有应 ...
- Spring基于构造函数和设值函数的依赖注入
基于构造函数的依赖注入 我们知道,bean标签中指定的类会进行初始化,这个初始化过程中自然会调用构造函数,那我们也可以利用这个构造函数完成依赖注入. 先创建一个类: public class Text ...
- Spring.Net快速入门:控制翻转、依赖注入、面向切面编程
Spring.Net主要功能: 1.IoC:控制翻转(Inversion of Control) 理解成抽象工厂翻转控制:就是创建对象的权利由开发人员自己控制New,转到了由容器来控制. 2.DI: ...
- springMVC学习(注解实现依赖注入)
原文:http://blog.csdn.net/mockingbirds/article/details/45399691 上一篇博客,学习了spring的依赖注入,即利用spring容器来为类中的属 ...
- 【半小时大话.net依赖注入】(下)详解AutoFac+实战Mvc、Api以及.NET Core的依赖注入
系列目录 上|理论基础+实战控制台程序实现AutoFac注入 下|详解AutoFac+实战Mvc.Api以及.NET Core的依赖注入 前言 本来计划是五篇文章的,每章发个半小时随便翻翻就能懂,但是 ...
- Spring IoC(一)bean实例化和依赖注入
1.IoC容器概述 IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入. 所谓 IOC ,就 ...
- Spring 3.x企业应用开发实战(9-1)----依赖注入
Spring中的依赖注入方式:属性注入.构造函数注入和工厂方式注入. 1.属性注入 属性注入即通过setXxx()方法注入Bean的属性值或依赖对象. 属性注入要求Bean提供一个默认的构造函数,在J ...
随机推荐
- html5 video 监听播放结束. 最好获取html标签而不是id。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MAMP mac下启动Mysql
MAMP mac下启动Mysql /Applications/MAMP/Library/bin/mysql -u root -p 初始密码 root:
- uva12563 Jin Ge Jin Qu hao(01背包)
这是一道不错的题.首先通过分析,贪心法不可取,可以转化为01背包问题.但是这过程中还要注意,本题中的01背包问题要求背包必须装满!这就需要在普通的01背包问题上改动两处,一个是初始化的问题:把dp[0 ...
- Codeforces Round #258 (Div. 2)C(暴力枚举)
就枚举四种情况,哪种能行就是yes了.很简单,关键是写法,我写的又丑又长...看了zhanyl的写法顿时心生敬佩.写的干净利落,简直美如画...这是功力的体现! 以下是zhanyl的写法,转载在此以供 ...
- CF 739E Gosha is Hunting
有 $n$ 个 Pokemon,你有 $A$ 个一类精灵球,$B$ 个二类精灵球 分别给出每个 Pokemon 被这两类精灵球捕捉的概率 求抓到 Pokemon 的最优期望个数 $n\leq 2000 ...
- POJ2411Mondriaan's Dream(DP+状态压缩 or 插头DP)
问题: Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, after prod ...
- Mybatis中对于标签的配置可能不会出现自动提示解决方案
解决办法:引入mybatis-3-config.dtd 文件 Window-preferences-搜索xml-xml catalog <!DOCTYPE configuration PUBLI ...
- Python Indentation
In Python, code blocks don't have explicit begin/end or curly braces to mark beginning and end of th ...
- 前用户sudo免密码
Ubuntu 设置当前用户sudo免密码 方法1 # 备份 /etc/sudoers sudo cp /etc/sudoers . #打开 /etc/sudoers sudo visudo # 在 ...
- ramfs, rootfs and initramfs
ramfs, rootfs and initramfs October 17, 2005 Rob Landley <rob@landley.net> =================== ...