IOC操作Bean管理
使用p名称空间注入,可以简化基于xml配置方式。
添加p名称空间在配置文件中:
接下来进行属性注入,在bean标签里添加 p:name=""即可。
1.字面量
(1)null 值
(2)属性值包含特殊符号
(1)
(2)
- 把特殊符号<>进行转义: < ; > ;
- 把带特殊符号内容写到CDATA
输出:<<南京>>
2.注入属性——外部 bean
(1)创建两个类service类和dao类
(2)在service里调用dao里面的方法
(3)在spring配置文件中进行配置
(1)
package service;
import dao.UserDao;
import dao.UserDaoImpl;
public class UserService {
//创建 UserDao类型属性,生成set方法
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void add() {
System.out.println("service add.........");
userDao.update();
/** 原始方法:创建UserDao对象
UserDao userDao = new UserDaoImpl();
userDao.update(); **/
}
}
(2)
uesrDao接口:
接口实现类:
(3)
xml配置文件
<!--1.service和dao对象创建-->
<bean id="userService" class="service.UserService">
<!--2.注入userDao对象
name属性:类里面属性名称
ref属性:创建userDao对象bean标签里的id值
-->
<property name="userDao" ref="userDaoImpl"></property>
</bean>
<bean id="userDaoImpl" class="dao.UserDaoImpl"></bean>
测试类:
package testdemo;
import com.jxust.Book;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.UserService;
public class TestBean {
@Test
public void testAdd(){
//1.加载spring配置文件
ApplicationContext context =
new ClassPathXmlApplicationContext("bean2.xml");
//2.获取配置创建的对象
UserService userService = context.getBean("userService", UserService.class);
userService.add();
}
}
输出结果:
3.注入属性——内部bean和级联赋值
上图中蓝色部分是嵌套内部bean。
此处不再使用 ref 进行引用,而是在其内部使用bean标签。
级联赋值: