跟我重温Spring--IOC(2)

1、Bean管理配置文件的标签

1. 使用无参数构造方法实例化Bean
    <bean id="bean1" class="com.itheima.demo2.Bean1"/>
 
2. id属性和name属性的区别
    * id        -- Bean起个名字,在约束中采用ID的约束,唯一
        * 取值要求:必须以字母开始,可以使用字母、数字、连字符、下划线、句话、冒号  id:不能出现特殊字符
 
    * name      -- Bean起个名字,没有采用ID的约束
        * 取值要求:name:出现特殊字符.如果<bean>没有id的话 , name可以当做id使用
        * Spring框架在整合Struts1的框架的时候,Struts1的框架的访问路径是以/开头的,例如:/bookAction
 
3. class属性          -- Bean对象的全路径
 
4. scope属性          -- scope属性代表Bean的作用范围!
    * singleton         -- 单例.(默认)
    * prototype         -- 多例,在Spring框架整合Struts2框架的时候,Action类也需要交给Spring做管理,配置把Action类配置成多例!!
    * request           -- 应用在Web项目中,每次HTTP请求都会创建一个新的Bean
    * session           -- 应用在Web项目中,同一个HTTP Session 共享一个Bean
    * globalsession     -- 应用在Web项目中,多服务器间的session
 
5. Bean对象的创建和销毁的两个属性配置(了解)
    * 说明:Spring初始化bean或销毁bean时,有时需要作一些处理工作,因此spring可以在创建和拆卸bean的时候调用bean的两个生命周期方法
    * init-method       -- bean被载入到容器的时候调用init-method属性指定的方法
    * destroy-method    -- bean从容器中删除的时候调用destroy-method属性指定的方法
        * 想查看destroy-method的效果,有如下条件
            * scope= singleton有效
            * web容器中会自动调用,但是main函数或测试用例需要手动调用(需要使用ClassPathXmlApplicationContextclose()方法)

 

2、Spring的依赖注入DI

IOC与DI的区别:

    IOC:控制反转,对象创建权反转给Spring。

    DI  :依赖注入,Spring框架创建Bean组件时,动态将依赖对象注入到Bean组件中。

例如:如果UserServiceImpl的实现类中有一个属性,那么使用Spring框架的IOC功能时,可以通过依赖注入把该属性的值传入进来!!
    * 具体的配置如下
        <bean id="us" class="com.spring.demo1.UserServiceImpl">
            <property name="uname" value="小风"/>
        </bean>

 

2.1、Spring的注入方式

    1,常见类的注入有三种:构造方法,set方法,接口注入。

    2,Spring框架提供了四种,底层实际使用了两种:构造方法及set方法。(有人说Spring也有接口注入,本人没找到)

    3,Spring框架的四种注入方式:构造方法,set方法,P名称空间,SPEL表达式。

A、 构造方法注入

1、 java类编写构造方法。

2、 编写配置文件

<bean id="car" class="com.spring.demo4.Car">
                <constructor-arg name="name" value="大奔"/>
                <constructor-arg name="money" value="100"/>
            </bean>

 

B、 Set方法注入

1、 编写Java类,属性及Set方法。

2、 编写配置文件

<bean id="car" class="com.spring.demo4.Car">
                <property name="name" value="大奔"/>
                <property name="money" value="100"/>
        </bean>

C、 P名称空间注入   Spring2.5版本以上 

1. 步骤一:需要先引入 p 名称空间
    * schema的名称空间中加入该行:xmlns:p="http://www.springframework.org/schema/p"
 
2. 步骤二:使用p名称空间的语法
    * p:属性名 = ""
    * p:属性名-ref = ""
 
3. 步骤三:测试
    * <bean id="person" class="com.spring.demo4.Person" p:pname="老王" p:car2-ref="car2"/>

 

D、SpEL表达式  spring3.0

1. SpELSpring Expression LanguageSpring的表达式语言,有一些自己的语法
2. 语法
* #{SpEL}
3. 例如如下的代码
 
 <!-- SpEL的方式 -->
    <bean id="person" class="com.spring.demo4.Person">
        <property name="pname" value="#{'小风'}"/>
        <property name="car2" value="#{car2}"/>
    </bean>
 
4. 还支持调用类中的属性或者方法
    * 定义类和方法,例如
        public class CarInfo {
            public String getCarname(){
                return "奇瑞QQ";
            }
        }
 
    * 配置CarInfo对应的Bean
        * <bean id="carInfo" class="com.spring.demo4.CarInfo"/>
* 获取属性的配置
       * <property name="name" value="#{carInfo.carname}"/>
  * 获取方法的配置
       * <property name="name" value="#{carInfo.getCarname()}"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值