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 ...
随机推荐
- oracle管理优化必备语句以及oracle SQL语句性能调整
本文转自http://www.dataguru.cn/article-3302-1.html oracle数据库管理优化必备语句: 1. SELECT T.START_TIME,T.USED_UBLK ...
- Redis集群部署3.0
我用的Mac的终端 ------------------------- 1.Redis简介 centos(5.4) Redis是一个key-value存储系统.和Memcached类似,但是解决了断 ...
- Spring_总结_01_Spring概述
一.前言 从今天开始,重新总结一下Spring的相关知识,主要是结合<Spring实战(第四版)>和 <JavaEE开发的颠覆者——SpringBoot实战>这两本书以及官方文 ...
- 畅通工程再续 (kruskal算法的延续)
个人心得:这题其实跟上一题没什么区别,自己想办法把坐标啥的都给转换为对应的图形模样就好了 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实 ...
- BZOJ4255:Keep Fit!
浅谈\(K-D\) \(Tree\) 题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=4255 莫队加\(kd\) \(tree\),直接 ...
- bzoj 1977 [BeiJing2010组队]次小生成树 Tree
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1977 kruscal别忘了先按边权sort.自己觉得那部分处理得还挺好的.(联想到之前某题的 ...
- 5、Selenium+Python自动登录163邮箱发送邮件
1.Selenium实现自动化,需要定位元素,以下查看163邮箱的登录元素 (1)登录(定位到登录框,登录框是一个iframe,如果没有定位到iframe,是无法定位到账号框与密码框) 定位到邮箱框( ...
- testng监听ISuiteListener
实现ISuiteListener public class TestNgBeforeAction implements ISuiteListener{ public void onStart(ISui ...
- 【HTML代码】访问页面时,拨打页面中的电话号码
这两天在写HTML页面今天要实现一个手机用户访问页面的时候,如果页面中有电话号码,点击可以打电话或者是发信息,之前没做过今天刚听说感觉很高大上会很难,实际上简单的让我内牛满面啊,, 小婊砸 (* ...
- IE版本的标准定义
解决方案 首页加代码把IE浏览器的标准改了,无论客户用的什么IE,都是按照IE7的标准来的. <meta http-equiv="X-UA-Compatible" conte ...