Spring注入方式一:setter 方法注入


所谓setter方法注入就是通过依赖对象或者类变量的setter方法得到依赖的对象或基本类型对象。 所以这种方式必须实现依赖对象和类变量的setter方法。

注入依赖对象

我们在spring中对于DAO层也就是数据层一般都是面向借口编程,我们create一个bean 他有一个业务方法add

public interface personDAO{
    void add();
}

public class PersonDAOImpl implements personDAO{
    publich void add () {
        System.out.println("invoke add function");
    }
}

然后又一个业务层类PersonService,同样也是面向接口编程

public interface PersonService {
    void save();
}
我们要向把依赖对象PersonDAO注入到personservicebean, 我们首先需要创建类变量以及getter和setter方法。

public class PersonServiceBean implements PersonService{
    public void save() {
    }

    public PersonDAO getPersonDAO() {
        return _personDAO
    }

    public void setPersonDAO (PersonDAO personDAO) {

        _personDAO = personDAO
    }
    private _personDAO;
}

然后再spring配置文件中:

方法一 Property属性

1. 配置PersonDAO bean

<bean id=personDAO class ="com.web.resource.PersonDAOImpl"></bean>
<bean id=personService class = "com.web.service.PersonServiceBean"></bean>

2. 通过bean的property属性把PersonDAO注入到personSeriveBean中

<bean id=personDAO class ="com.web.resource.PersonDAOImpl"/>
<bean id=personService class = "com.web.service.PersonServiceBean">
    <property name ="personDAO" refer ="personDAO"><、property>
</bean>

方法二 内部Bean

<bean id=personDAO class ="com.web.resource.PersonDAOImpl"/>
<bean id=personService class = "com.web.service.PersonServiceBean">
    <property name ="personDAO">
        <bean class = "com.web.resource.PersonDAOImpl"></bean>
    </property>
</bean>

注入基本类型

比如PersonServiceBean 有基本类型变量name 和id
public class PersonServiceBean implements PersonService{
    public void save() {
    }

    public PersonDAO getPersonDAO() {
        return _personDAO
    }

    public void setPersonDAO (PersonDAO personDAO) {

        _personDAO = personDAO
    }
    private _personDAO;

    public String getName() {
	return _name;
    }

    public void setNaem (String name) {
	_name = name;
    }

    public Interger getId() {
	return _id;    
    }

    publich void setId(Interger id) {
        _id =id
    } 
    private String _name;

    private Integer _id; 
}

那么我们在配置文件中配置如下

 
<bean id=personDAO class ="com.web.resource.PersonDAOImpl"></bean>
<bean id=personService class = "com.web.service.PersonServiceBean">
    <property name ="personDAO">
        <bean class = "com.web.resource.PersonDAOImpl"></bean>
    </property>
    <property name ="name" value = "defaultname"></property>
    <property name ="id" value ="defaultid"></property>
</bean>

我们可以直接通过在配置文件中设置基本类型常量的value

注入集合对象

public class PersonServiceBean implements PersonService{
    public void save() {
    }

    public PersonDAO getPersonDAO() {
        return _personDAO
    }

    public void setPersonDAO (PersonDAO personDAO) {

        _personDAO = personDAO
    }
    public  Set<String>  getSetObj() {
        return _setObj;
    }

    public void setSetObj() (Set<String>  setObj) {

        _setObh = setObj
    }
    private _personDAO;
    private Set<String> _setObj;
}





<bean id=personDAO class ="com.web.resource.PersonDAOImpl"></bean>
<bean id=personService class = "com.web.service.PersonServiceBean">
    <property name ="personDAO">
        <bean class = "com.web.resource.PersonDAOImpl"></bean>
    </property>
    <property name ="name" value = "defaultname"></property>
    <property name ="id" value ="defaultid"></property>
    <property name = "setObj">
        <set>
		<value> fiest one</value>
		<value>second one</value>
		<value> third  one</value>
	</set>
    </property>
</bean>


























  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中,可以使用setter方法注入注入依赖项。具体步骤如下: 1. 在需要注入依赖项的类中定义一个私有的依赖项变量,并生成对应的setter方法。 ```java @Service public class MyService { private MyDependency myDependency; public void setMyDependency(MyDependency myDependency) { this.myDependency = myDependency; } } ``` 2. 在配置类中使用@Bean注解创建依赖项的实例,并通过调用setter方法将依赖项注入到需要的类中。 ```java @Configuration public class MyConfig { @Bean public MyDependency myDependency() { return new MyDependency(); } @Bean public MyService myService() { MyService myService = new MyService(); myService.setMyDependency(myDependency()); return myService; } } ``` 3. 如果需要注入多个依赖项,只需要在目标类中定义多个私有变量和对应的setter方法,然后在配置类中使用多个@Bean注解创建依赖项的实例并注入即可。 ```java @Service public class MyService { private MyDependency1 myDependency1; private MyDependency2 myDependency2; public void setMyDependency1(MyDependency1 myDependency1) { this.myDependency1 = myDependency1; } public void setMyDependency2(MyDependency2 myDependency2) { this.myDependency2 = myDependency2; } } @Configuration public class MyConfig { @Bean public MyDependency1 myDependency1() { return new MyDependency1(); } @Bean public MyDependency2 myDependency2() { return new MyDependency2(); } @Bean public MyService myService() { MyService myService = new MyService(); myService.setMyDependency1(myDependency1()); myService.setMyDependency2(myDependency2()); return myService; } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值