Spring入门(4)-注入Bean属性
Spring入门(4)-注入Bean属性
本文介绍如何注入Bean属性,包括简单属性、引用、内部Bean、注入集合等。
0. 目录
- 注入简单值
- 注入引用
- 注入内部Bean
- 装配集合
- 装配空值
- 使用命名空间p
1. 注入简单值
前面介绍过注入简单值的例子,在这里回顾一下。
package com.chzhao.springtest;
public class PersonBll implements IPersonBll {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public void show() {
System.out.println(id);
}
public void addPerson(Person p) {
System.out.println("add person: " + p.getName());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="PersonBll" class="com.chzhao.springtest.PersonBll" >
<property name="id" value="abcdefg"></property>
</bean>
</beans>
2. 注入引用
大部分情况下简单值不能满足要求,往往是需要一个引用。
package com.chzhao.springtest;
public class PersonBll implements IPersonBll {
private Person person;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public void show() {
System.out.println(this.person.getName());
}
public void addPerson(Person p) {
System.out.println("add person: " + p.getName());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="p" class="com.chzhao.springtest.Person">
<property name="name" value="老王" />
</bean>
<bean name="PersonBll" class="com.chzhao.springtest.PersonBll" >
<property name="person" ref="p"></property>
</bean>
</beans>
3. 注入内部Bean
除了上面这种方式之外,也可以把Bean定义为内部Bean,防止别的类调用。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="PersonBll" class="com.chzhao.springtest.PersonBll" >
<property name="person" >
<bean name="p" class="com.chzhao.springtest.Person">
<property name="name" value="老王" />
</bean>
</property>
</bean>
</beans>
4. 装配集合
Spring也支持装配集合,支持的集合如下:
| 集合元素 | 用途 |
|---|---|
| list | 装配list类型的值,允许重复 |
| set | 装配set类型的值,不允许重复 |
| map | 装配map类型的值 |
| props | 装配properties类型的值,名称和值都必须是String |
4.1. 装配list或set
装配list和set差不多,只是set元素不能重复
package com.chzhao.springtest;
import java.util.List;
public class PersonBll implements IPersonBll {
private List<String> idList;
public List<String> getIdList() {
return idList;
}
public void setIdList(List<String> idList) {
this.idList = idList;
}
public void show() {
for (String s : this.idList) {
System.out.println(s);
}
}
public void addPerson(Person p) {
System.out.println("add person: " + p.getName());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="PersonBll" class="com.chzhao.springtest.PersonBll">
<property name="idList">
<list>
<value>wang</value>
<value>zhao</value>
<value>li</value>
</list>
</property>
</bean>
</beans>
4.2. 装配map
package com.chzhao.springtest;
import java.util.Map;
public class PersonBll implements IPersonBll {
private Map<Integer, Person> pmap;
public Map<Integer, Person> getPmap() {
return pmap;
}
public void setPmap(Map<Integer, Person> pmap) {
this.pmap = pmap;
}
public void show() {
for (Integer i : this.pmap.keySet()) {
System.out.println(i);
System.out.println(this.pmap.get(i).getName());
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="laowang" class="com.chzhao.springtest.Person">
<property name="name" value="老王" />
</bean>
<bean name="laoli" class="com.chzhao.springtest.Person">
<property name="name" value="老李" />
</bean>
<bean name="PersonBll" class="com.chzhao.springtest.PersonBll">
<property name="pmap">
<map>
<entry key="1" value-ref="laowang"></entry>
<entry key="2" value-ref="laoli"></entry>
</map>
</property>
</bean>
</beans>
MAP的属性包括
| 属性 | 用途 |
|---|---|
| key | key为String |
| key-ref | key为引用 |
| value | 值为string |
| value-ref | 值为引用 |
4.3. 装配properties
package com.chzhao.springtest;
import java.util.Properties;
public class PersonBll implements IPersonBll {
private Properties pro;
public Properties getPro() {
return pro;
}
public void setPro(Properties pro) {
this.pro = pro;
}
public void show() {
System.out.println(this.pro.get("1"));
System.out.println(this.pro.get("2"));
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="PersonBll" class="com.chzhao.springtest.PersonBll">
<property name="pro">
<props>
<prop key="1">老王</prop>
<prop key="2">老李</prop>
</props>
</property>
</bean>
</beans>
5. 装配空值
也可以把属性赋值为空
package com.chzhao.springtest;
public class PersonBll implements IPersonBll {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public void show() {
if (this.id == null) {
System.out.println("null");
} else {
System.out.println(this.id);
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="PersonBll" class="com.chzhao.springtest.PersonBll">
<property name="id" ><null></null></property>
</bean>
</beans>
也可以定义为
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="PersonBll" class="com.chzhao.springtest.PersonBll">
<property name="id" ><null/></property>
</bean>
</beans>
6. 使用命名空间p
Spring提供了命名空间p简化Bean属性定义,需要在XML中增加
xmlns:p="http://www.springframework.org/schema/p"
package com.chzhao.springtest;
public class PersonBll implements IPersonBll {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
private Person person;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public void show() {
System.out.println(this.person.getName());
System.out.println(this.id);
}
public void addPerson(Person p) {
System.out.println("add person: " + p.getName());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="p" class="com.chzhao.springtest.Person">
<property name="name" value="老王" />
</bean>
<bean name="PersonBll" class="com.chzhao.springtest.PersonBll"
p:person-ref = "p" p:id="0000">
</bean>
</beans>
Spring入门(4)-注入Bean属性的更多相关文章
- Spring学习笔记--注入Bean属性
这里通过一个MoonlightPoet类来演示了注入Bean属性property的效果. package com.moonlit.myspring; import java.util.List; im ...
- Spring学习(五)-----注入bean属性的三种方式( 1: 正常的方式 2: 快捷方式 3: “p” 模式)
在Spring中,有三种方式注入值到 bean 属性. 正常的方式 快捷方式 “p” 模式 看到一个简单的Java类,它包含两个属性 - name 和 type.稍后将使用Spring注入值到这个 b ...
- spring实战一:装配bean之注入Bean属性
内容参考自spring in action一书. 创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入的本质. 1. 创建spring配置 spring是一个基于容器的框架.如果没有配置spri ...
- spring学习笔记之---bean属性注入
bean属性注入 (一)构造方法的属性注入 1.Student.java package entity; public class Student { private String name; pri ...
- 依赖注入Bean属性
一.Bean属性依赖注入 对于类成员变量,注入方式有三种 •构造函数注入 •属性setter方法注入 •接口注入 Spring支持前两种 1.构造函数 属性注入 使用构造方法注入,在Spring配置文 ...
- Spring中注解注入bean和配置文件注入bean
注解的方式确实比手动写xml文件注入要方便快捷很多,省去了很多不必要的时间去写xml文件 按以往要注入bean的时候,需要去配置一个xml,当然也可以直接扫描包体,用xml注入bean有以下方法: & ...
- spring boot 动态注入bean
方法一 SpringContextUtil public class SpringContextUtil { private static ApplicationContext application ...
- spring 初始化时注入bean实现listener的方法
两种方法: 1.实现ApplicationListener<ContextRefreshedEvent>的onApplicationEvent(ContextRefreshedEvent ...
- spring注解方式注入bean
用注解的方式注入bean,spring的配置文件也要增加一些约束和导入注解所在的包 applicationContext.xml <?xml version="1.0" en ...
随机推荐
- 加密解密(9)Diffie-Hellman密钥交换协议
过程如下 : 1,小李把KeyX经过加密变化,生成MsgA传给老王. 2,老王得到MsgA,保存在本地. 3,老王把KeyY经过加密变化,生成MsgB传给小李, 4,小李得到MsgB保存在本地, 5, ...
- 查看EBS中BI Publisher的版本
查看EBS中BI Publisher的版本问题,Oracle提供了如下的几种方法: 从BI Publisher产生的报表文件查看 通过系统已打过的补丁(Patch)来决定,通过补丁号和BI Publi ...
- eclipse mingw cpp开发环境
Eclipse开发c++ 对比:微软的VC++6.0:太老了,对win7兼容不好, 现在微软的Visual Studio:安装包太大,好几个G,装了一堆你不需要的东西,要钱,教 育版申请麻烦 DOS下 ...
- volicity语法学习和总结
Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象.当Velocit ...
- LA 2572 (求可见圆盘的数量) Kanazawa
题意: 把n个圆盘依次放到桌面上,按照放置的先后顺序给出这n个圆盘的圆心和半径,输出有多少个圆盘可见(即未被全部覆盖). 分析: 题中说对输入数据进行微小扰动后答案不变. 所露出的部分都是由若干小圆弧 ...
- IIS没有ASP.NET选项卡
问题: 1.IIS没有ASP.NET选项卡 2.默认文档不起作用 分析: 1,在安装了.net framework 2.0后,iis站点属性里才会有asp.net的选项. 2,安装asp.net2.0 ...
- listagg 函数
listagg 函数--oracle 11g release 2 转载:http://xpchild.blog.163.com/blog/static/10180985920108485721969/ ...
- 零基础学通C语言,福利来啦!!!!zfhl.ke.qq.com
- Linux Shell编程(2): for while
; i < ; i++)) do echo "current number is $i" done SERVICES="80 22 25 110 8000 23 2 ...
- jQuery避免$符和其他JS库冲突的方法对比
1.如果jquery库在第三方库之后引用.这个时候jquery库会占用$. 解决办法:剔除$符号的使用权. <script type="text/javascript" sr ...