spring的屬性注入是bean管理中的一個非常重要的內容,它可以通過有參數的構造函數注入屬性,也可以通過set方法注入屬性。包括基本類型的屬性注入、對象類型的屬性注入和複雜類型的屬性注入。
一.基本類型
有參數構造
代碼實現:
public class User{
private String username;
public User(String username) {
this.username = username;
}
public void test1(){
System.out.println("User....."+username);
}
}
spring配置文件實現:
<!-- 使用有參數的構造注入屬性 -->
<bean id="user" class="cn.itcast.property.User">
<!-- 使用有參的構造注入 -->
<constructor-arg name="username" value="張三"></constructor-arg>
</bean>
有參數的構造函數注入屬性的時候用的是<constructor-arg/>標籤。
set方法設置
代碼實現:
public class Book {
private String bookname;
//set方法
public void setBookname(String bookname) {
this.bookname = bookname;
}
public void demobook(){
System.out.println("book......."+bookname);
}
}
spring配置文件實現:
<!-- 使用set方法注入屬性 -->
<bean id="book" class="cn.itcast.property.Book">
<!-- 注入屬性值
name屬性值:類裏面定義的屬性名稱
value屬性:設置具體的值 -->
<property name="bookname" value="Spring實戰"></property>
</bean>
使用set方法注入屬性時用的是<property/>標籤。
二.對象類型
我們在項目實戰中,service一般都需要調用dao,這時候就需要把dao對象注入到service中。首先我們創建UserService和UserDao兩個類,並在UserService類中定義UserDao類型的屬性。
public class UserService {
//1.定義dao類型屬性
private UserDao userDao;
//生成set方法
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void add(){
System.out.println("service.........");
//在service裏面得到dao類對象,才能調用dao裏面的方法
userDao.add();
}
}
public class UserDao {
public void add(){
System.out.println("dao.........");
}
}
在配置文件中創建userService和userDao對象,並將userDao注入到userService中。
<!-- 注入對象類型屬性 -->
<!-- 配置service和dao對象 -->
<bean id="userDao" class="cn.itcast.ioc.UserDao"></bean>
<bean id="userService" class="cn.itcast.ioc.UserService">
<!-- 注入dao對象
name屬性值:service類裏面屬性名稱
字符串用value,對象用ref
ref屬性:dao配置bean標籤中id值 -->
<property name="userDao" ref="userDao"></property>
</bean>
三.複雜類型
除了上面兩種類型可以注入之外,還有複雜類型屬性的注入,比如數組、list、map、properties等。
public class Person {
private String[] arrs;
private List<String> list;
private Map<String,String> map;
private Properties properties;
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 test(){
System.out.println("arrs:"+arrs);
System.out.println("list:"+list);
System.out.println("map:"+map);
System.out.println("properties:"+properties);
}
}
<!-- 注入複雜類型屬性值 -->
<bean id="person" class="cn.itcast.ioc.Person">
<!-- 數組 -->
<property name="arrs">
<list>
<value>張三</value>
<value>李四</value>
<value>王五</value>
</list>
</property>
<!-- list -->
<property name="list">
<list>
<value>Tom</value>
<value>Bob</value>
<value>Mary</value>
</list>
</property>
<!-- map -->
<property name="map">
<map>
<entry key="aa" value="小明"></entry>
<entry key="bb" value="小紅"></entry>
<entry key="cc" value="小美"></entry>
</map>
</property>
<!-- properties -->
<property name="properties">
<props>
<prop key="driverclass">com.mysql.jdbc.Driver</prop>
<prop key="username">root</prop>
</props>
</property>
</bean>
今天介紹的都是通過配置文件來實現bean管理,而我們平時經常用的是通過註解來管理bean,所以接下來將爲大家介紹註解方式的bean管理。