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

  • 相关阅读:
    scrapy 断点续爬
    Tornado
    python 列表去重的几种方法
    安装Mysql-python报错EnvironmentError: mysql_config not found
    安装setuptools 报错缺少zlib
    微信小程序-if条件渲染
    微信小程序-遍历列表
    微信小程序-数据绑定
    超强过滤器
    如何在tomcat安装部署php项目
  • 原文地址:https://www.cnblogs.com/victorbu/p/10415645.html
Copyright © 2011-2022 走看看