由于最近自己面试,遇到的一些题目,记录下来
转载网址:http://www.cnblogs.com/AnXinliang/p/5463598.html
其实分两种注入方式:
1、XML的方式:(配置的方式)
1、set方法注入
package com.zjl.springdemo.action
public class SpringAction{
private SpringDao springDao;
public void setSpringDao(SpringDao springDao){
this.springDao=springDao;
}
public void login(){
System.out.println("=====");
}
}
sping.xml中bean的配置
<bean name="springAction" class="com.zjl.springdemo.action.SpringAction">
<property name="springDao" ref="springDao"/>
</bean>
<bean name="springDao" class="com.zjl.springdemo.dao.SpringDao"></bean>
2、构造方法注入
public class SpringAction{
private SpringDao springDao;
private User user;
//使用构造器的方式进行注入
public SpringAction(SpringDao springDao,User user){
this.springDao =springDao;
this.user=user;
}
}
<bean name="springAction" class="com.zjl.springdemo.action.SpringAction">
<consturctor-arg ref="springDao"/>
<constructor-arg ref="user"/>
</bean>
<bean name="springDao" class="com.zjl.springdemo.dao.SpringDao"/>
<bean
name="springDao" class="com.zjl.springdemo.entity.User"/>
如果遇到了两个同类型的参数的话,设置可以如下
<bean name="springAction" class="com.zjl.springdemo.action.SpringAction">
<constructor-arg index="0" ref="springDao"/>
<constructor-arg index="1" ref="user"/>
</bean>
3、静态工厂的方法注入
静态工厂类:
package com.zjl.springdemo.dao
........
public class DaoFactory{
public static FactoryDao getStaticFactoryDaoImpl(){
return new StaticFactoryDaoImpl
}
}
public class SpringAction{
private FactoryDao staticFactoryDao;
public void setStaticFactoryDao(FactoryDao staticFactoryDao){
this.staticFactoryDao=staticFactoryDao;
}
}
spring.xml配置
<bean name="springDao" class="com.zjl.springdemo.action.SpringAction">
<property name="staticFactoryDao" ref="staticFactoryDao"/>
</bean>
<bean name="staticFactoryDao" class="com.zjl.springdemo.dao.DaoFactory" factory-method="getStaticFactoryDaoImpl"/>
4、实例工厂方法注入
public class DaoFactory{
public FactoryDao getFactoryDAoImpl(){
return new Factory FactoryDaoImpl();
}
}
public class SpringAction{
private FactoryDao factoryDao;
public void setStaticFactoryDao(FactoryDao factoryDao){
this.factoryDao=factoryDao;
}
}
<bean name="springAction" class="com.zjl.springdemo.action.SpringAction">
<property name="factoryDao" ref="factoryDao"/>
</bean>
<bean name="factoryDao" factory-bean="daoFactory" factory-method="getFactoryDaoImpl"/>
<bean name="daoFactory" class="com.zjl.springdemo.dao.DaoFactory"></bean>