使用有参数构造注入
1 创建类,定义属性,生成有参数构造
/**
* 有参数构造注入
* @author asus
*
*/
public class Book {
private String bname;
private String author;
//生成有参数构造
public Book(String bname, String author) {
this.bname = bname;
this.author = author;
}
public void add() {
System.out.println("book:"+bname+"::"+author);
}
}
2 配置属性注入
<!-- 使用有参数构造注入 -->
<bean id="book" class="cn.attr.Book">
<!-- 体现有参数构造
name: 属性名称
value:设置值
-->
<constructor-arg name="bname" value="易筋经"></constructor-arg>
<constructor-arg name="author" value="小王"></constructor-arg>
</bean>
使用set方法注入
1 创建类,定义属性,生成属性set方法
/**
* set方法注入
* @author asus
*
*/
public class Orders {
private String oname;
private String oaddress;
//生成set方法
public void setOname(String oname) {
this.oname = oname;
}
public void setOaddress(String oaddress) {
this.oaddress = oaddress;
}
public void add() {
System.out.println("orders:"+oname+"::"+oaddress);
}
}
2 配置属性注入
<!-- set方法注入 -->
<bean id="orders" class="cn.attr.Orders">
<!-- name: 属性名称
value:设置值 -->
<property name="oname" value="洗髓经"></property>
<property name="oaddress" value="嵩山"></property>
</bean>
注入对象类型属性(重点)
第一步 在service定义dao类型属性
public class UserService {
//目的:在service获取dao对象
//把dao对象注入到service
//1 定义UserDao类型属性
private UserDao userDao;
//2 生成set方法
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
第二步 实现配置
<!-- 注入对象类型属性 -->
<bean id="userDaoImpl" class="cn.itcastUserDao"></bean>
<bean id="userService" class="cn.itcast.UserService">
<!-- 如果注入普通类型属性 使用value属性 ,如果注入对象类型属性,使用ref属性
name: 类里面的属性名称
ref:dao对象所在标签id值
-->
<property name="userDao" ref="userDaoImpl"></property>
</bean>
p名称空间注入
public class Person{
private String pname;
public void setPname(String pname){
this.pname=pname;
}
}
引入p名称空间
xmlns:p="http://www.springframework.org/schema/p"
<bean id="person" class="cn.peoperty.Person" p:pname="lucy"></bean>
(1)spring2.x以下版本,不能使用p名称空间注入
Spel注入
写法: #{值}
public class Person{
private String pname;
public void setPname(String pname){
this.pname=pname;
}
}
<bean id="person" class="cn.property.Person>
<property name="pname" value="#{'value'}"></property >
</bean>
注入复杂类型属性
1 数组
2 List集合
3 Map集合
4 Properties
/**
* 复杂类型属性
* @author asus
*
*/
public class Customer {
//定义属性
private String[] arrs;
private List<String> list;
private Map<String,String> map;
private Properties properties;
//set方法
public void setArrs(String[] arrs) {
this.arrs = arrs;
}
public void setList(List<String> list) {
this.list = list;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public void find() {
System.out.println("arrs: "+Arrays.toString(arrs));
System.out.println("list: "+list);
System.out.println("map: "+map);
System.out.println("properties: "+properties);
}
}
<bean id="customer" class="cn.itcast.attr.Customer">
<!-- 数组 -->
<property name="arrs">
<list>
<value>lucy</value>
<value>mary</value>
<value>jack</value>
</list>
</property>
<!-- list -->
<property name="list">
<list>
<value>小王</value>
<value>小金</value>
<value>小奥</value>
</list>
</property>
<!-- map-->
<property name="map">
<map>
<entry key="football" value="足球"></entry>
<entry key="basketball" value="篮球"></entry>
</map>
</property>
<!-- properties -->
<property name="properties">
<props>
<prop key="driverClass">com.mysql.jdbc.Driver</prop>
<prop key="jdbcUrl">jdbc:mysql:///day01</prop>
</props>
</property>
</bean>