spring依赖注入的4种方式

Spring 依赖注入的4种方式

一、Set注入

必须要有setter方法

public class UserDao {
          
   
    public void test(){
          
   
        System.out.println("=====test======");
    }
}
package com.yao.service;

import com.yao.pojo.UserDao;

public class UserService {
          
   

    private UserDao userDao;


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

    public void test(){
          
   
        System.out.println("UserService.test");
    }
}
<bean id="userDao" class="com.yao.pojo.UserDao"/>
    <bean id="userService" class="com.yao.service.UserService">
        <property name="userDao" ref="userDao"/>
    </bean>

二、构造器注入

必须要有有参构造方法

package com.yao.service;

import com.yao.pojo.UserDao;

public class UserService {
          
   

    private UserDao userDao;
    
    public UserService(UserDao userDao) {
          
   
        this.userDao = userDao;
    }

    public void test(){
          
   
        System.out.println("UserService.test");
    }
}
<bean id="userDao" class="com.yao.pojo.UserDao"/>
    <bean id="userService" class="com.yao.service.UserService">
        <constructor-arg index="0" name="userDao" ref="userDao"/>
</bean>

三、静态工厂方法注入

package com.yao.factory;

import com.yao.pojo.UserDao;

public class Factory {
          
   

    public static UserDao getUserDao(){
          
   
        return new UserDao();
    }
}
<bean id="userDao" class="com.yao.factory.Factory" factory-method="getUserDao"/>
    <bean id="userService" class="com.yao.service.UserService">
        <property name="userDao" ref="userDao"/>
    </bean>

四、实例工厂方法注入

package com.yao.factory;

import com.yao.pojo.UserDao;

public class Factory {
          
   

//    静态工厂
    public static UserDao getUserDao(){
          
   
        return new UserDao();
    }

//    实例工厂
    public UserDao userDao(){
          
   
        return new UserDao();
    }
}
<bean id="factory" class="com.yao.factory.Factory"/>
    <bean id="userDao2" factory-bean="factory" factory-method="userDao"/>
    <bean id="userService" class="com.yao.service.UserService">
        <property name="userDao" ref="userDao2"></property>
    </bean>
经验分享 程序员 微信小程序 职场和发展