Spring之DI

SpringDI:依赖注入(需要在ioc基础上完成)

    setter注入    

    构造器注入

Spring的自动装配,ByName,BType,consract    

延迟加载Lazy-init:配置bean的加载方式,若为true,则只有使用该对象时spring容器才会创建该对象,若为false时,一旦配置文件被读取,则Spring容器会将所有bean都实例化。

 

    ①Bean作用域(scope):

            singleton(默认配置)每一个bean对应一个实例(无论获取多少个)(默认配置)

            prototype:每一次获取bean都是一个新建的实例(一般web项目中控制对象应该配置为prototype)

            request:在web项目中,针对每一次请求都创建一个bean的实例

            session:在web项目中,针对每一次会话都创建bean实例

            global session:在web项目中,针对所有客户端的请求始终只创建一个bean实例/22Bean的生命周期:

        ②init-method在对象初始化之后指定的方法

           destroy-method:在对象被销毁前执行指定方法

        ③id&name:id通常指代bean唯一标识,不允许重复;name也可以与id具备相同功能(根据name获取bean),但是name可以同时支持多个值(使用,隔开),除第一个name值,之后的值都是该bean的别名,如果一个bean的配置中既存在id也存在name时,此时name会作为别名

 

 

 

 

四、Bean实例化三种方式

    1、无参构造器(用法详情Spring实例之IOC

若类没有默认构造器会出现异常:BeanCreationException:No default constructor found

<bean id="hello" class="com.my.spring.SpringHelloWorld"></bean>

    2、使用静态工厂(少用)

//静态工厂写法

public staic Bean1 getBean1(){ return new Bean1();}

//创建

<bean id="hello" class="com.my.spring.BeanFactory" factor-method="getBean1"></bean>

    3、使用实例工厂(少用)

//静态工厂写法

public Bean1 getBean1(){ return new Bean2();}

//创建

<bean id="beanFactory" class="com.my.spring.BeanFactory" "></bean>

<bean id="hello" factory-bean="beanFactory" factor-method="getBean1"></bean>

六、属性注入方式

    1、Setter注入(重点)

<bean id="demo1" class = "com.my.property.PropertyDemo1">

    <!--注入属性值;name是类里面定义的属性名称,value是设置具体的值-->

    <property name="username" value="gougou"></property>

</bean>

    2、构造器注入

<bean id="demo1" class = "com.my.property.PropertyDemo1">

    <!--使用有参构造;参数名称,值-->

    <constructor-arg name="username" value="gougou"></construtor-arg>

</bean>

·   3、接口注入(spring不支持)

 

七、注入对象

    1、实现过程:

①:写dao类和service类

②:service类里面定义dao类型属性,生成set方法

③:service类方法里面调用dao类的方法

public class UserService{

    private UserDao userdao;



    public void setUserDao(UserDao userDao){

        this.userDao = userDao;

    } 



    public void add(){

        userDao.add();

    }

}

④:在配置文件完成注入过程(setter注入方式)

<!--配置dao对象-->

<bean id="userDao" class="com.my.UserDao"></bean>





<!--配置service对象-->

<bean id="userService" class="com.my.UserService">

    <!--注入dao对象,不要写value属性;ref写dao配置bean标签中id值 -->

    <property name="userDao" ref="userDao"></property>

</bean>

八、注入复杂类型(array,map,list,properties)

在配置文件里面实现

<bean>

    <!--arry-->

    <property name="arras">

        <list>

            <value>小王</value>

            <value>小李</value>

        </list>

    </property>    



    <!--list-->

    <property name="list">

        <list>

            <value>小王</value>

            <value>小李</value>

        </list>

    </property> 



    <!--map-->

    <property name="map">

        <map>

            <enty key="no1" value="王"></enty>

            <enty key="no2" value="李"></enty>

        </map>

    </property> 



    <!--properties-->

    <property name="properties">

        <props>

            <prop key="driverclass">com.mysql.jdbc.Driver</prop>

            <prop key="username" >root</prop>

        </props>

    </property>



</bean>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值