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 ...
随机推荐
- CTO俱乐部下午茶:技术团队管理中的那些事儿
摘要:"CTO下午茶"是一种有效的集体对话的模式,参加活动的成员在真诚互动和共同学习的宗旨下齐聚一堂,在喝茶聊天氛围下交流工作心得.本期"CTO下午茶"的主题是 ...
- [原创]Android中LocationManager的简单使用,获取当前位置
Android中LocationManager的提供了一系列方法来地理位置相关的问题,包括查询上一个已知位置:注册/注销来自某个 LocationProvider的周期性的位置更新:以及注册/注销接近 ...
- 数据库编程与C#编程互译
今天有一段代码,先是用程序实现. 闲来无聊,又用存储过程实现了一次. 程序中实现. /// <summary> /// 根据区域和用户名获取可访问的国家 /// </summary& ...
- Selenium Tutorial (1) - Starting with Selenium WebDriver
Starting with Selenium WebDriver Selenium WebDriver - Introduction & Features How Selenium WebDr ...
- live555学习之基本类介绍及计划任务深度探讨
liveMedia项目的源代码包括四个基本的库,各种测试代码以及Media Server.四个基本的库分别是: UsageEnvironment&TaskScheduler, groupsoc ...
- 【转】APUE习题4.6---测试lseek作用
原文网址:http://m.blog.csdn.net/blog/u014488381/42556509 原题:如果使用追加标志打开一个文件以便读.写,能否仍用 lseek 在任一为止开始读?能否用 ...
- 如何打开和关闭Oracle Flashback
1.打开flashback: 关闭数据库 SQL>shutdown immediate; 启动到mount方式 SQL>startup mount; 如果归档没有打开,打开归档[因为fla ...
- 利用反射自动生成SQL语句(仿Linq)
转:http://www.cnblogs.com/the7stroke/archive/2012/04/22/2465597.html using System; using System.Colle ...
- ASIHttpRequest编译不通过
转:http://blog.sina.com.cn/s/blog_67a5e47201014tof.html Undefined symbols for architecture i386: &q ...
- Android-使用getIdentifier()获取资源Id
使用getIdentifier()获取资源Id int i= getResources().getIdentifier("icon", "drawable", ...