Spring 基础

0. 名词解释

IoC (Inversion of Control): 应用程序本身不负责依赖对象的创建和维护,而是由外部容器(Spring Container)负责创建和维护。

 

1. 初始化Bean容器

by classpath

try {
            context = new ClassPathXmlApplicationContext(springXmlpath.split("[,\s]+"));
            context.start();
        } catch (BeansException e) {
            e.printStackTrace();
        }

2. Spring 的2种注入方式

injectionService是主bean,injectionDAO 是成员变量,自动调用setInjectionDAO。

public class InjectionServiceImpl implements InjectionService {
    
    private InjectionDAO injectionDAO;
    
    //构造器注入
    public InjectionServiceImpl(InjectionDAO injectionDAO1) {
        this.injectionDAO = injectionDAO1;
    }
    
    //设值注入
    public void setInjectionDAO(InjectionDAO injectionDAO) {
        this.injectionDAO = injectionDAO;
    }

    public void save(String arg) {
        //模拟业务操作
        System.out.println("Service接收参数:" + arg);
        arg = arg + ":" + this.hashCode();
        injectionDAO.save(arg);
    }
}
public class InjectionDAOImpl implements InjectionDAO{
    public void save(String arg){
        //模拟数据库保存操作
        System.out.println("保存数据"+arg);
    }
}

测试

@RunWith(BlockJUnit4ClassRunner.class)
public class TestInjection extends UnitTestBase{
    public TestInjection(){
        super("classpath:spring-injection.xml");
    }

    @Test
    public void testSetter(){
        InjecionService service = super.getBean("injectionService");
        service.save("要保存的数据");
    }

    @Test
    public void testCons(){
        InjecionService service = super.getBean("injectionService");
        service.save("要保存的数据");
    }
}

 (1)设值注入

<?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 id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">
      <property name="injectionDAO" ref="injectionDAO"></property>
     </bean> <bean id="injectionDAO" class="com.imooc.ioc.injection.dao.InjectionDAOImpl"></bean> </beans>

(2)构造注入

<?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 id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">
            <constructor-arg  ref="injectionDAO"></constructor-arg>
        </bean>
        
        <bean id="injectionDAO" class="com.imooc.ioc.injection.dao.InjectionDAOImpl"></bean>
    
 </beans>
原文地址:https://www.cnblogs.com/phoenix13suns/p/4237817.html