Spring 学习笔记(1)注入Injection_type

Spring 的注入主要分为三种:这里只介绍两种,set注入和构造方法注入(1)配置xml文件,可到spring的API文档去找applicationContext,这里就直接以这个命名了“applicationContext.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-2.5.xsd">
	
	<!-- Dao层注入配置 -->
	<bean id="UserDaoForOracleImp" class="cn.eduask.spring.dao.UserDaoForOracleImp"/> 
	<bean id="UserDaoForMySqlImp" class="cn.eduask.spring.dao.UserDaoForMySqlImp"/>
	
	 
	<!-- Service层注入配置 Set方法方式 -->
	<bean id="UserManagerImp" class="cn.eduask.spring.service.UserManagerImp">
		<property name="userDao" ref="UserDaoForMySqlImp"></property>
	</bean> 
	
	
	<!-- Service层注入配置 构造方法方式 -->
	<!-- <bean id="UserManagerImp" class="cn.eduask.spring.service.UserManagerImp">
		<constructor-arg ref="UserDaoForOracleImp"></constructor-arg>
	</bean>  -->
	
	<!-- Action层注入配置 -->
	
</beans></span>



(2)配置操作层

public interface IUserDao {

	public void save(String username,String userpass);
}


public class UserDaoForMySqlImp implements IUserDao {

	
	public void save(String username, String userpass) {
		
		System.out.println("---------------UserDaoForMySqlImp.save()----------------");
		System.out.println("用户名 :" + username );
		System.out.println("密码 :" + userpass );
	}

	public void del(){
		System.out.println("---------del()--------");
	}
}
public class UserDaoForOracleImp implements IUserDao {

	public void save(String username, String userpass) {
		
		System.out.println("---------------UserDaoForOracleImp.save()----------------");
		System.out.println("用户名 :" + username );
		System.out.println("密码 :" + userpass );
	}

}




(3)配置应用层
public interface IUserManager {
	
	public void save(String username,String userpass);
}
public class UserManagerImp implements IUserManager {

	IUserDao userDao;
	
	public UserManagerImp(){		
	}
	
	public UserManagerImp(IUserDao userDao){
		this.userDao = userDao;
	}
	
	//数据保存方法封装
	public void save(String username, String userpass) {
		
		this.userDao.save(username, userpass);
	}

	public void setUserDao(IUserDao userDao) {
		this.userDao = userDao;
	}

}


(4)测试,调用

public class UserTest {

	public static void main(String[] args) {
		
		
		// 实例化 Spring IOC 容器的方式一 -- 推举方式
		//BeanFactory factory1 = new ClassPathXmlApplicationContext("applicationContext.xml");
		
  
        <span style="white-space:pre">	</span>// 实例化 Spring IOC 容器的方式二   
        <span style="white-space:pre">	</span>/*ClassPathResource classPathResource = new ClassPathResource(   
                <span style="white-space:pre">	</span>"applicationContext.xml");   
      <span style="white-space:pre">		</span> BeanFactory factory2 = new XmlBeanFactory(classPathResource); */
       
        
       <span style="white-space:pre">		</span> // 实例化 Spring IOC 容器的方式三   
       <span style="white-space:pre">		</span> ApplicationContext context2 = new ClassPathXmlApplicationContext(   
               <span style="white-space:pre">	</span> new String[] { "applicationContext-dao.xml",   
                        "applicationContext-ser.xml" });   
       <span style="white-space:pre">		</span> BeanFactory factory3 = context2; 
        
        
       <span style="white-space:pre">		</span>// 实例化 Spring IOC 容器的方式四	-- 推举方式
		//BeanFactory factory4 = new ClassPathXmlApplicationContext("applicationContext-*.xml");
		
		
		// 测试:实例化userManager对象
		//IUserManager userManager = (IUserManager)factory1.getBean("UserManagerImp");
		
		// 当前是哪个对象在调用save方法
		//userManager.save("eduask", "stone");
		
	}
}

    一般都通过set来注入,需要注意的是当采用这种方法注入时,在应用层UserManagerImp中需要加一个空构造方法,否则会报异常,不妨可以亲自测试一下。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值