写点什么

Spring 依赖注入有哪几种方式

作者:千锋IT教育
  • 2022-11-28
    北京
  • 本文字数:1464 字

    阅读完需:约 5 分钟

1. 构造器注入

/*带参数,方便利用构造器进行注入*/   public CatDaoImpl(String message){           
    this. message = message;  

<bean id="CatDaoImpl" class="com.CatDaoImpl">  
    <constructor-arg value=" message "></constructor-arg>  
</bean> 复制代码
复制代码

2. setter 方法注入

 public class Id {   
     private int id;  
     public int getId() {  
         return id; 
     }   
     public void setId(int id) { 
         this.id = id;  
     }  

<bean id="id" class="com.id "> 
    <property name="id" value="123"></property> 
</bean>   复制代码
复制代码

3. 静态工厂注入

静态工厂顾名思义,就是通过调用静态工厂的方法来获取自己需要的对象,为了让 spring 管理所有对象,我们不能直接通过"工程类.静态方法()"来获取对象,而是依然通过 spring 注入的形式获取:

public class DaoFactory {   
    //静态工厂      
    public static final FactoryDao getStaticFactoryDaoImpl(){          
        return new StaticFacotryDaoImpl();  
    }  
}  
public class SpringAction {            
    private FactoryDao staticFactoryDao;  //注入对象  
    //注入对象的 set 方法  
    public void setStaticFactoryDao(FactoryDao staticFactoryDao) {          
        this.staticFactoryDao = staticFactoryDao;  
    }
}  
//factory-method="getStaticFactoryDaoImpl"指定调用哪个工厂方法
<bean name="springAction" class=" SpringAction" >  
    <!--使用静态工厂的方法注入对象,对应下面的配置文件-->  
    <property name="staticFactoryDao" ref="staticFactoryDao"></property>            
</bean>  
<!--此处获取对象的方式是从工厂类中获取静态方法-->  
<bean name="staticFactoryDao" class="DaoFactory" factory-method="getStaticFactoryDaoImpl"></bean> 复制代码
复制代码

4. 实例工厂注入

实例工厂的意思是获取对象实例的方法不是静态的,所以你需要首先 new 工厂类,再调用普通的实例方法:

public class DaoFactory {   
    //实例工厂       
    public FactoryDao getFactoryDaoImpl(){          
        return new FactoryDaoImpl();  
    }  

public class SpringAction {      
    private FactoryDao factoryDao;    
    //注入对象        
    public void setFactoryDao(FactoryDao factoryDao) {          
        this.factoryDao = factoryDao;  
    }  
}  
<bean name="springAction" class="SpringAction">  
    <!--使用实例工厂的方法注入对象,对应下面的配置文件-->  
    <property name="factoryDao" ref="factoryDao"></property>      
</bean>  
<!--此处获取对象的方式是从工厂类中获取实例方法-->  
<bean name="daoFactory" class="com.DaoFactory"></bean>  
<bean name="factoryDao" factory-bean="daoFactory" factory-method="getFactoryDaoImpl"></bean>  
复制代码


用户头像

国内IT培训机构良心品牌 2022-08-02 加入

学习资料下载获取,添加QQ:3547925594

评论

发布
暂无评论
Spring 依赖注入有哪几种方式_千锋IT教育_InfoQ写作社区