您的位置:首页 > 编程语言 > Java开发

Spring的几种注入类型

2012-03-09 23:07 316 查看
入类型(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注入方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: