Spring 学习(二)依赖注入

前言:
注入有两种方式:1、设值注入
2、构造注入

(一)设值注入
1、新建一个xml文件:injection.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" >

    <!--  在service中注入dao,那么name属性与InjectionServiceImpl中定义的private InjectionDao dao ;一致
            ref引用的值,与下面com.yuna.injection.InjectionDaoImpl中声明的bean id 一致
    -->
    <bean id = "injectionService" class="com.yuna.injection.InjectionServiceImpl">
            <property name="dao" ref = "injDao"></property>
    </bean>

    <bean id = "injDao" class="com.yuna.injection.InjectionDaoImpl"></bean>

</beans>

2、新建接口InjectionDao

public interface InjectionDao {

    public void saveInfo(String  info) ;
}

3、新建接口InjectionDao的实现类

public class InjectionDaoImpl implements InjectionDao {

    @Override
    public void saveInfo(String info) {
        System.err.println("Dao - 将数据保存到数据库中:" + info);
    }
}

4、新建接口InjectionService

public interface InjectionService {

    public void doSomeThing(String someThing) ;
}

5、新建接口的InjectionService实现类InjectionServiceImpl

public class InjectionServiceImpl implements InjectionService{

    private InjectionDao dao ;

    //1、设值注入
    public void setDao(InjectionDao dao) {
        this.dao = dao;
    }

    @Override
    public void doSomeThing(String someThing)  {
        System.out.println("server-处理相关数据:" +  someThing);
        someThing = someThing + ":" + this.hashCode();
        dao.saveInfo(someThing);
    }

6、在测试类TestInject中写个测试设值注入的方法

public class TestInject extends UnitTestBase{


    public TestInject() {
        super("classpath:injection.xml");
    }

    @Test
    public void testSetValueInj () {
        InjectionService service  = super.getBean("injectionService");
        service.doSomeThing("这是要处理的数据");
    }
}

(二)构造注入
1、我们在InjectionServiceImpl类中添加一个构造器

//2、构造注入
    public InjectionServiceImpl(InjectionDao dao) {
        this.dao = dao;
    }

2、在测试类中新增测试构造注入的方法

public class TestInject extends UnitTestBase{
    public TestInject() {
        super("classpath:ConstructorInjection.xml");

    }

    @Test
    public void testConstructInj() {
        InjectionService service = super.getBean("injectionService");
        service.doSomeThing("这是要处理的数据");
    }
}

猜你喜欢

转载自blog.csdn.net/ycf03211230/article/details/79433770