SpringIOC容器-对象依赖

来源:互联网 发布:大学生交友软件2017 编辑:程序博客网 时间:2024/04/28 21:16

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>



0 0