注入外部bean
首先创建两个包dao和service
dao包下创建一个接口UserDao和这个接口的实现类UserDaoImpl
UserDao接口
package com.atguigu.spring5.dao;
public interface UserDao {
public void update();
}
UserDaoImpl类
package com.atguigu.spring5.dao;
public class UserDaoImpl implements UserDao{
@Override
public void update() {
System.out.println("Dao update......");
}
}
service包下创建一个类UserService
UserService类
package com.atguigu.spring5.service;
import com.atguigu.spring5.dao.UserDao;
public class UserService {
private UserDao use;
public void setUse(UserDao use) {
this.use = use;
}
public void add(){
System.out.println("service add.........");
use.update();
}
}
我们要做的就是在UserService
这个类里调用UserDao
的实现类UserDaoImpl
的update()
方法
传统的方法是需要new一个UserDaoImpl
对象,然后就可以调用它的update()
方法
Spring配置xml可以通过set方法注入外部bean
我们在创建UserService
类的时候在类里生成一个UserDao
的set方法,通过add()
方法调用update()
然后创建一个xml文件,配置xml注入外部bean
xml代码如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--外部bean注入-->
<bean name="service" class="com.atguigu.spring5.service.UserService">
<property name="use" ref="dao"></property>
</bean>
<bean name="dao" class="com.atguigu.spring5.dao.UserDaoImpl"></bean>
</beans>
我们可以通过<bean name="dao" class="com.atguigu.spring5.dao.UserDaoImpl"></bean>
先创建一个对象,再通过property
中的ref
属性注入到另一个bean
里,即:<property name="use" ref="dao"></property>
,这便是外部bean的注入,也是级联赋值的第一种表现形式
创建一个测试类
public class TestBean {
@Test
public void testbean() {
ApplicationContext context=new ClassPathXmlApplicationContext("bean2.xml");
UserService service=context.getBean("service",UserService.class);
service.add();
}
}