String Bean 注入方式

注解注入:

 属性注入的注解(说明:使用注解注入的方式,可以不用提供set方法)

    如果是注入的普通类型,可以使用value注解

        @Value            -- 用于注入普通类型(基本数据类型和字符串)

    *如果注入的是对象类型,使用如下注解

       * @Autowired        -- 默认按类型进行自动装配(去IOC容器去找他注解的对象实现的类,自动装配注入)

           * 如果想按名称注入

           * @Qualifier    -- 强制使用名称注入                 

                       必须一块使用:@Autowired

                                           @Qualifier("dao") 

    *@Resource             -- 相当于@Autowired和@Qualifier一起使用

       * 强调:Java提供的注解

       * 属性使用name属性

bean 的作用范围和生命周期:

1. Bean的作用范围注解

    *注解为@Scope(value="prototype"),作用在类上。值如下:

       * singleton     -- 单例,默认值

       * prototype    -- 多例

2. Bean的生命周期的配置(了解)

    *注解如下(作用在方法上):

       * @PostConstruct    -- 相当于init-method(当bean被载入到容器的时候调用)

       * @PreDestroy       -- 相当于destroy-method



技术分析之Spring框架的属性注入

1. 对于类成员变量,常用的注入方式有两种

    *构造函数注入

    *属性setter方法注入

2. 在Spring框架中提供了前两种的属性注入的方式

   1. 构造方法的注入方式,两步

       * 编写Java的类,提供构造方法

        

   public class Car {

                private String name;

                private double money;

                public Car(String name, doublemoney) {

                    this.name = name;

                    this.money = money;

                }

                @Override

                public String toString() {

                    return "Car[name=" + name + ", money=" + money + "]";

                }

           }

       * 编写配置文件

         

  <bean id="car" class="com.itheima.demo4.Car">

                <constructor-argname="name" value="大奔"/>

                <constructor-argname="money" value="100"/>

           </bean>

<!-- 加载properties文件 -->

    <context:property-placeholder location="classpath:mail.properties"/>

   2. 属性的setter方法的注入方式

       * 编写Java的类,提供属性和对应的set方法即可

       * 编写配置文件

   3. 如果Java类的属性是另一个Java的类,那么需要怎么来注入值呢?

       * <property name="name" rel="具体的Bean的ID或者name的值"/>

       * 例如:

           <bean id="person"class="com.itheima.demo4.Person">

                <propertyname="pname" value="美美"/>

                <propertyname="car2" ref="car2"/>

           </bean>


技术分析之Spring的2.5版本中提供了一种:p名称空间的注入(了解)

1. 步骤一:需要先引入 p 名称空间

    *在schema的名称空间中加入该行:xmlns:p="http://www.springframework.org/schema/p"

2. 步骤二:使用p名称空间的语法

    *p:属性名 = ""

    *p:属性名-ref = ""

3. 步骤三:测试

    *<bean id="person" class="com.itheima.demo4.Person"p:pname="老王" p:car2-ref="car2"/>


技术分析之Spring的3.0提供了一种:SpEL注入方式(了解)

1. SpEL:Spring ExpressionLanguage是Spring的表达式语言,有一些自己的语法

2. 语法

    *#{SpEL}

3. 例如如下的代码

  

 <!-- SpEL的方式 -->

   <bean id="person"class="com.itheima.demo4.Person">

       <property name="pname" value="#{'小风'}"/>

       <property name="car2" value="#{car2}"/>

   </bean>

4. 还支持调用类中的属性或者方法

    *定义类和方法,例如

       public class CarInfo {

           public String getCarname(){

                return "奇瑞QQ";

           }

       }


技术分析之数组,集合(List,Set,Map),Properties等的注入

1. 如果是数组或者List集合,注入配置文件的方式是一样的

   

<bean id="collectionBean"class="com.itheima.demo5.CollectionBean">
       <property name="arrs">
           <list>
                <value>美美</value>
                <value>小风</value>
           </list>
       </property>
   </bean>

2. 如果是Set集合,注入的配置文件方式如下:

  

 <property name="sets">
       <set>
           <value>哈哈</value>
           <value>呵呵</value>
       </set>
   </property>

3. 如果是Map集合,注入的配置方式如下:

   <property name="map">
       <map>
           <entry key="老王2" value="38"/>
           <entry key="凤姐" value="38"/>
           <entry key="如花" value="29"/>
       </map>

   </property>

4. 如果是properties属性文件的方式,注入的配置如下:

  

 <property name="pro">
       <props>
           <prop key="uname">root</prop>
           <prop key="pass">123</prop>
       </props>
   </property>






猜你喜欢

转载自blog.csdn.net/ityqing/article/details/80110797
今日推荐