Spring之属性注入
时间:2017-1-31 23:38
——Bean的属性注入方式
有三种注入方式:
1)接口注入:
定义一个接口,定义setName(String name)方法,定义一个类,实现该接口,并提供private String name。
2)构造器注入:
定义一个类,声明一个private String name,通过构造器this.name = name;进行注入。
在配置文件中使用<constructor-arg>标签。
3)通过set方法注入:
在类中声明成员变量,并且提供set()方法。
在配置文件中使用<property>标签。
这种注入方式最常用。
——构造器注入
在配置文件中使用<constructor-arg>标签进行设置。
该标签有五个属性:
* name:表示属性名称
* value:表示属性值
* index:表示构造器参数的索引
* type:表示属性的类型,例如:java.lang.String
* ref:表示引用对象
示例代码:
——set方法注入
在类中提供局部成员变量,并且提供set方法。
在配置文件中使用<property>标签。
<property>标签中有三个属性:
* name:表示属性的名称
* value:表示普通属性的值
* ref:表示引用对象
示例代码:
——set方法注入对象属性
需要使用<property>标签中的ref属性,属性的值是其它Bean的id或name。
示例代码:
——名称空间p
为了简化XML文件配置,Spring2.5开始引入一个新的p名称空间。
使用方法:
1)在<beans>标签中添加:xmlns:p="http://www.springframework.org/schema/p"
2)p:<属性名>="xxx" 引入普通变量值
3)p:<属性名>-ref="xxx" 引入其他Bean对象
示例代码:
<bean id="car2" class="com.wyc.spring3.demo5.Car2" p:name="保时捷" p:price="2000000" />
<bean id="person" class="com.wyc.spring3.demo5.Person" p:name="李四" p:car2-ref="car2"/>
——SpEL属性注入
Spring3.0开始提供的表达式语言。
语法:
#{表达式}
<bean id="" value="#{表达式}" />
1)直接使用字符串常量
#{'哈哈哈'}
2)使用另一个Bean对象
#{person} // 根据其他bean标签的id属性获取
3)使用指定对象的属性
#{person.name}
4)使用方法的返回值作为属性
#{person.showName()} // 会将showName()方法的返回值作为value的值
5)使用静态字段或方法
#{T(java.lang.Math).PI}
示例代码:
——集合属性的注入
示例代码:
----------------------------------------------------------------------------------------------------------------------------
配置文件:
——总结
IoC装配Bean(XML)
* 语法:
> <bean id="" class="" />
> id:满足XML的id约束语法,id不能重复,不能存在特殊字符
> name:可以重复,可以存在特殊字符
> 如果只配置name,那么就可以将name的值作为id。
* 配置Bean的其他属性
> init-method
初始化方法。
> destroy-method
销毁方法。
> scope
singleton:单例
prototype:多例
* DI注入属性:
> 普通属性
<property name="属性名" value="属性值" />
> 引用属性
<property name="属性名" ref="其他类的id或name" />
* 集合属性的注入
Spring之属性注入的更多相关文章
- Spring的属性注入, byName和byType还有注入List属性
昨天花了一晚上的时间又仔细研究了一下Spring的属性注入, 一个新的方法: 自动装载和autowire, 不过因为又想起来老师说不常用, 感觉这一晚上的时间有点亏, 还是自己太愚钝了, 反应太慢 先 ...
- SpringBoot之Spring@Value属性注入使用详解
在使用Spring框架的项目中,@Value是使用比较频繁的注解之一,它的作用是将配置文件中key对应的值赋值给它标注的属性.在日常使用中我们常用的功能都比较简单,本篇文章系统的带大家来了解一下@Va ...
- 【Spring 2】spring的属性注入形式
一.注入简介 spring是一个java bean的容器,它摒弃了过去通过new关键字调用类再调用类的实例的形式,通过依赖注入维护者一系列的java bean的示例.通过spring所提供的依赖注入 ...
- Spring中属性注入的几种方式以及复杂属性的注入
在Spring框架中,属性的注入我们有多种方式,我们可以通过构造方法注入,可以通过set方法注入,也可以通过p名称空间注入,方式多种多样,对于复杂的数据类型比如对象.数组.List集合.map集合.P ...
- Spring入门-----------------属性注入和对象注入
属性注入即通过setter方法注入bean的属性或依赖对象. 属性注入使用<property>元素,使用name属性指定bean的属性的名称,value属性或<value>子节 ...
- spring的属性注入和构造器注入
spring在向IOC容器中注入Bean的时候,有三种注入方式: 属性注入构造器注入工厂方法注入平常中用到的前两种方法较多,下面对前两种方法举例.一.属性注入1.创建一个car类,作为注入的bean ...
- Spring中属性注入的几种方式以及复杂属性的注入详解
在spring框架中,属性的注入我们有多种方式,我们可以通过set方法注入,可以通过构造方法注入,也可以通过p名称空间注入,方式多种多样,对于复杂的数据类型比如对象.数组.List.Map.Prope ...
- Spring静态属性注入
今天遇到一个工具类,需要静态注入一个属性,方法如下: 第一步:属性的set和get方法不要加static package cn.com.chinalife.ebusiness.common.util; ...
- 【Spring】---属性注入
一.Spring注入属性(有参构造和[set方法]) 注意:在Spring框架中只支持set方法.有参构造方法这两种方法. 使用有参数构造方法注入属性(用的不多,但需要知道): 实体类 package ...
随机推荐
- 大疆M3508、M2006必备CAN总线知识与配置方法
使用大疆M3508.M2006的CAN总线知识与配置方法 目录 使用大疆M3508.M2006的CAN总线知识与配置方法 前言: 0x00 需要额外的CAN收发器!!! 0x01 硬件层面分析 为什么 ...
- React构建组件的方式
一.是什么 组件就是把图形.非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式 在React中,一个类.一个函数都可以视为一个组件 在Vue系列中,我们了解到组件所存在的优势: 降低整个系 ...
- 微信小程序云开发-云函数-云函数获取参数并实现运算
1.编写加法运算的云函数addData 2.在本地小程序页面调用云函数
- 从源码构建Vim
从源码构建Vim 引言 事情是介样滴,因为我是个Vim 重度使用者了差不多.. 但在大部分系统上能安装到的或者自带的都是比较老的版本,可能是7.x 之类的.也或者是你需要使用到Vim 的某些特性或者功 ...
- BZOJ2457 双端队列 题解
本题直接求解十分困难,因为在不知道整个序列的数字规律时当前所作决策都无法保证最优性. 考虑正难则反,题目转化为将一个非降序列分成尽量少的几段,让每段对应原问题的双端队列. 先将原数组排序,由于原数组下 ...
- Mac终端美化(iterm2+zsh+oh-my-zsh+powerlevel10k)
iterm2+zsh+oh-my-zsh+powerlevel10k 一.下载iterm2 方式一:官网下载 https://iterm2.com/ 方式二:百度云下载 链接: https://pan ...
- 使用 GLFW 在 OpenGL 的场景中漫游
前言 前面已经建立了 OpenGL 框架,加载了 3D 模型,但是还没有在场景中漫游的功能.为了展示 3D 模型,我只是简单地利用变换视图矩阵的方式使模型在视野中旋转.同时,之前的程序连最简单的改变窗 ...
- 1549页Android最新面试题含答案
在今年年初的疫情中,成了失业人员之一,于是各种准备面试,发现面试题网上很多,但是都是很凌乱的,而且一个地方一点,没有一个系统的面试题库,有题库有的没有答案或者是答案很简洁,没有达到面试的要求.所以一直 ...
- Spring学习笔记--面向切面编程(AOP)
什么是AOP AOP(Aspect Oriented Programming),意为面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的 ...
- Notes about WindowPadX
WindowPadX乃一Autohotkey脚本,具有强大的单/多显示器窗口排布能力且易于配置.有了它,那些Pro版收费的.需要安装的DisplayFusion, MultiMon TaskBar, ...