1 概述
Spring中,如何給對象的屬性賦值? ?【DI, 依賴注入】
1) 通過構造函數
2) 通過set方法給屬性注入值
3) p名稱空間
4) 自動裝配
5) 注解
1.1?通過構造函數
<!-- ###############對象屬性賦值############### --><!-- 1) 通過構造函數 --><bean id="user1" class="cn.itcast.c_property.User" scope="prototype"><constructor-arg value="100"></constructor-arg><constructor-arg value="Tom"></constructor-arg></bean>
1.2 (常用)Set方法注入值
<!-- dao instance --><bean id="userDao" class="c_property.UserDao"></bean><!-- service instance --><bean id="userService" class="c_property.UserService"><property name="userDao" ref="userDao"></property></bean><!-- action instance --><bean id="userAction" class="c_property.UserAction"><property name="userService" ref="userService"></property></bean>
User.java
public class User {private int id;private String name;// --> 通過容器注入屬性值public void setId(int id) {this.id = id;}// //--> 通過容器注入屬性值public void setName(String name) {this.name = name;}public int getId() {return id;}public String getName() {return name;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + "]";}public User() {super();System.out.println("------User對象創建【無參數構造器】------");}public User(int id, String name) {System.out.println("-----User對象創建【帶參數構造器】--------");this.id = id;this.name = name;}public void init_user() {System.out.println("創建對象之后,初始化");}public void destroy_user() {System.out.println("IOC容器銷毀,user對象回收!");}}
UserAction.java
public class UserAction {// Service: springIOC容器注入private UserService userService;public void setUserService(UserService userService) {this.userService = userService;}public String execute() {userService.save();return null;}
}
UserService.java
public class UserService {private UserDao userDao; // = new UserDao();// IOC:對象的創建交給spring的外部容器完成public void setUserDao(UserDao userDao) {this.userDao = userDao;}public void save() {userDao.save();}
}
UserDao.java
public class UserDao {public void save() {System.out.println("zmiagen:保存用戶");}
}
1.3?內部bean
<!-- ##############內部bean############## --><bean id="userAction" class="c_property.UserAction"><property name="userService"><bean class="c_property.UserService"><property name="userDao"><bean class="c_property.UserDao"></bean></property></bean></property></bean>