Spring的几种注入类型

 

入类型(Injecting dependencies)
setter(重要)
构造方法(使用的非常少)
接口注入(可以忘记)
setter注入类型Setter Injection
 就是在bean中使用setXXX方法进行注入来
 在bean类中,成员属性需要setXXX方法如下:
public class UserService {
 private UserDao userDao = new UserDaoImpl();
 public UserDao getUserDao() {
  return userDao;
 }
 public void setUserDao(UserDao userDao) {
  this.userDao = userDao;
 }
 public void add(User u){userDao.save(u);}
}
spring配置文件如下:
  <bean id="u" class="com.wjt276.dao.impl.UserDaoImpl" >
  </bean>
  <bean id="userService" class="com.wjt276.service.UserService">
   <property name="userDao" ref="u"/><!-- 这里的ref表示参考id=u的那个bean -->  
   <!--或是下面的方式
   <property name="userDao">
   <ref bean="u"></ref>
   </property> -->
  </bean>
构造方法Constructor Injection
首先在bean类中需要有成员属性作为参数的构造方法
 代码如下:
public class UserService {
 private UserDao userDao = new UserDaoImpl();
 public UserService(UserDao userDao) {
  super();
  this.userDao = userDao;
 }
 public UserDao getUserDao() {return userDao;}
 public void setUserDao(UserDao userDao) { this.userDao = userDao;}
 public void add(User u){ userDao.save(u);}
}
注意:背景较深的代码为构造方法,带有参数的构造方法
spring配置文件如下:
<bean id="u" class="com.wjt276.dao.impl.UserDaoImpl" >  </bean>
  <bean id="userService" class="com.wjt276.service.UserService">
    <constructor-arg>
     <bean class="com.wjt276.dao.impl.UserDaoImpl"></bean>
     <!-- <ref bean="u"/> -->
     <!--
需要注意的:
使用<bean>表示,重新new一个bean然后注入进去,
使用<ref>表示,使用已经new好的bean,这是只是引用它。       
      -->
    </constructor-arg>
  </bean>
使用<constructor-arg>和其子标签<bean>或<ref>进行构造方法注入
当构造方法注入时,构造方法中有多个参数时,可以使用以下两种方式注入:
bean代码:
public class ExampleBean {
    private int years;
    private String ultimateAnswer;
    public ExampleBean(int years, String ultimateAnswer) {
        this.years = years;
        this.ultimateAnswer = ultimateAnswer;
    }
}
1、参数类型方式进行区分参数:
xml配置文件:
<bean id="exampleBean" class="examples.ExampleBean">
<constructor-arg type="int" value="7500000"/>
<constructor-arg type="java.lang.String" value="42"/>
</bean>
注意:这样就是参数类型为int的注入7500000,而参数类型为java.lang.String的参数注入”42”,但这个方法不适合多个参数是相同的类型。
2、利用索引进行区分参数
xml配置文件
<bean id="exampleBean" class="examples.ExampleBean">
  <constructor-arg index="0" value="7500000"/>
  <constructor-arg index="1" value="42"/>
</bean>
注意:index=0的注入到第一个参数,index=1的注入到第二个参数。
构造方法的注入不方便,所以我们需要使用setter注入方式。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值