zoukankan      html  css  js  c++  java
  • 学习 Spring (二) Spring 注入

    Spring入门篇 学习笔记

    常用的两种注入方式

    1. 设值注入
    2. 构造注入

    示例准备工作

    添加 InjectionDAO:

    public interface InjectionDAO {
    	
    	void save(String arg);
    	
    }
    

    添加 InjectionDAOImpl:

    public class InjectionDAOImpl implements InjectionDAO {
    	
    	public void save(String arg) {
    		System.out.println("保存数据:" + arg);
    	}
    
    }
    

    添加 InjectionService:

    public interface InjectionService {
    	
    	void save(String arg);
    	
    }
    

    设值注入

    添加 InjectionServicePropertyImpl:

    public class InjectionServicePropertyImpl implements InjectionService {
    
    	private InjectionDAO injectionDAO;
    	
    	public void setInjectionDAO(InjectionDAO injectionDAO) {
    		this.injectionDAO = injectionDAO;
    	}
    
    	public void save(String arg) {
    		System.out.println("Service(Property)接收参数:" + arg);
    		arg = arg + ":" + this.hashCode();
    		injectionDAO.save(arg);
    	}
    	
    }
    

    添加配置文件 classpath:spring-injection-property.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 id="injectionService" class="com.karonda.ioc.injection.service.InjectionServicePropertyImpl">
            <property name="injectionDAO" ref="injectionDAO"></property>
         </bean>
    
        <bean id="injectionDAO" class="com.karonda.ioc.injection.dao.InjectionDAOImpl"></bean>
     </beans>
    

    添加测试 TestInjectionProperty:

    @RunWith(BlockJUnit4ClassRunner.class)
    public class TestInjectionProperty extends UnitTestBase {
    
    	public TestInjectionProperty() {
    		super("classpath:spring-injection-property.xml");
    	}
    	
    	@Test
    	public void testSetter() {
    		InjectionService service = super.getBean("injectionService");
    		service.save("这是要保存的数据");
    	}
    	
    }
    

    构造注入

    添加 InjectionServiceConstructorImpl:

    public class InjectionServiceConstructorImpl implements InjectionService {
    	
    	private InjectionDAO injectionDAO;
    	
    	//构造器注入
    	public InjectionServiceConstructorImpl(InjectionDAO injectionDAO) {
    		this.injectionDAO = injectionDAO;
    	}
    
    	public void save(String arg) {
    		//模拟业务操作
    		System.out.println("Service(Constructor)接收参数:" + arg);
    		arg = arg + ":" + this.hashCode();
    		injectionDAO.save(arg);
    	}
    	
    }
    

    添加配置文件 spring-injection-constructor.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 id="injectionService" class="com.karonda.ioc.injection.service.InjectionServiceConstructorImpl">
            	<constructor-arg name="injectionDAO" ref="injectionDAO"></constructor-arg>
            </bean>
            
            <bean id="injectionDAO" class="com.karonda.ioc.injection.dao.InjectionDAOImpl"></bean>
    	
     </beans>
    

    添加测试 TestInjectionConstructor

    @RunWith(BlockJUnit4ClassRunner.class)
    public class TestInjectionConstructor extends UnitTestBase {
    	
    	public TestInjectionConstructor() {
    		super("classpath:spring-injection-constructor.xml");
    	}
    
    	
    	@Test
    	public void testCons() {
    		InjectionService service = super.getBean("injectionService");
    		service.save("这是要保存的数据");
    	}
    	
    }
    

    源码:learning-spring

  • 相关阅读:
    IE 中的 button type默认值问题
    linux中的&&和&,|和||
    scp 上传 下载 文件
    git 撤销,放弃本地修改
    git branch 新建,推送与删除
    git tags 管理
    CentOS7下Firewall常用命令
    git 忽略文件,不提交文件 清空缓存
    mysql 常用命令
    优秀的测试人员简历是什么样子的?
  • 原文地址:https://www.cnblogs.com/victorbu/p/10415645.html
Copyright © 2011-2022 走看看