装配SpringBean

一.实现IOC容器依赖注入(注入springIOC容器中,先装配再注入)的三种方式

1.构造器注入
public class User {
    private String userId;
    private String userName;
    private String userPassword;

    public User(String userId, String userName, String userPassword) {
        this.userId = userId;
        this.userName = userName;
        this.userPassword = userPassword;
    }
<!--构造器注入-->
    <!--constructor-arg index="0" value="1":构造方法,第一个参数(参数位置),值为1-->
    <bean id="user1" class="com.hly.spring.pojo.springBean.User">
        <constructor-arg index="0" value="1"/>
        <constructor-arg index="1" value="hly"/>
        <constructor-arg index="2" value="123"/>
    </bean>

     这样注入比较简单,但是确定是参数较少,可读性不错,如果参数很多,就可以用setter注入。

2.setter注入

   Spring中最主流的注入方式了,灵活且可读性高,首先把构造方法声明为无参数类型,setter注入为其设置相应的值,原理是通过java反射技术实现。

   首先在User加入一个没有参数的构造方法,然后配置。

<!--setter注入-->
    <!--property:参数名字-->
    <bean id="user2" class="com.hly.spring.pojo.springBean.User">
        <property name="userId" value="1"/>
        <property name="userName" value="hly"/>
        <property name="userPassword" value="123"/>
    </bean>
3.接口注入

二.PS

1.Bean相当于一个组件,这个组件用于实现某个功能,Bean就相当于给了你一个简洁方便的方法来调用这个组件来实现你要完成的功能。

2.Spring中Bean的配置,如果不显式指明scope的值,那么默认为单例singleton。也就是说这个Bean只会新建一个实例。 

3.设置为prototype之后,就会创建多个实例,可以理解为会new很多次。而singleton只会new一个实例 。

<bean id="user2" class="com.hly.spring.pojo.springBean.User" scope="prototype">
    <property name="userId" value="1"/>
    <property name="userName" value="hly"/>
    <property name="userPassword" value="123"/>
</bean>

4.准确的说,每次spring要获取bean的时候,都会调用getBean()方法 ,如果这个bean是singleton,那就会取唯一的一个实例出来 ,如果是prototype,那么每次getBean(),都会new一个新实例 。

5.每次请求都会传age过来,如果这个Action是个单例的话,后面请求的age,就把前面的给覆盖了,所以必须设置成prototype 。

6.对于有实例变量的类,要设置成prototype;没有实例变量的类,就用默认的singleton 。

7.Spring2.0中,scope除了可以设置"singleton" 与"prototype"之外,针对Web应用程序环境,还可以设置"request"、"session"与"globalSession",分别表示请求阶段、会话阶段与基于Portlet的Web应用程序会话阶段。

猜你喜欢

转载自blog.csdn.net/sirius_hly/article/details/80259468
今日推荐