<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java綠地(~ming~)

    Java 草地

    常用鏈接

    統(tǒng)計

    最新評論

    Spring的注入方式

    Spring

    一.Spring是一個輕量級的Ioc( DI )AOP的簡化企業(yè)開發(fā)的容器框架


    二.set注入方式



    1.
    屬性注入:a. public class Message {private String title;private String content;  getter/setter…}

    b.public interface Printer { public void startup(); public void print();}

      c. public class PrinterImpl implements Printer {  private Message message;

    public void setMessage(Message message){ …}   //通過ser方法設置值

    public void print() {System.out.println(message.getTitle());  }…….//需要值的存在

      d.屬性注入:<bean id="message" class="assemble.Message">  //將控制交給容器注入

                 <property name="title" value="china title"></property>

                 <property name="content" value="control content"></property>  </bean>


    e.
    通過底層的BeanFactory創(chuàng)建和分發(fā):

    XmlBeanFactory factory =new XmlBeanFactory(new ClassPathResource(“mypck/xxx.xml”));

    ClassName name=( ClassName) factory.getBean("className "); //get此時延時加載,功能有限



    2
    .引用其他類:<bean id="printer" class="assemble.PrinterImpl"

                    init-method="startup" singleton="true" >   //容器參與了生命周期管理

                   <property name="message" ref="message"></property>  </bean>

      singleton="true":默認對象可以復用,false是不會加載的,因為創(chuàng)建多個實例就不需要了

    初始化的順序:構(gòu)造函數(shù)(沒有就默認-àsetter-àinit-method



    3.
    內(nèi)部類:<bean id="printer2" class="assemble.PrinterImpl"   init-method="startup">

         <property name="message">       <bean class="assemble.Message">

             <property name="title" value="china title2"></property>   </bean>

         </property>   </bean>



    4
    .裝配集合:a.public class Foo {    private List list;    private String[ ] array;

         private Set set;   private Map map;  private Properties props; setter/getter }

      b. <property name="list">//value值的類型spring會自動區(qū)分

           <list>    <value>spring</value>  <ref bean="message"/> </list>   </property>

         <property name="array">  <list>      <value>ejb</value>   </list>  </property>



    5.
    裝配set: <property name="set">       //set集合值是沒有重復的

     <set>   <value>jave ee</value>    <value>.net</value>    </set>  </property>



    6.
    裝配map: <property name="map">

          <map> <entry key="orm"><value>hibernate</value> </entry>  </map>  </property>



    7.
    裝配properties: <property name="props">  //propskeyvalue都是string所以可以簡寫

           <props>  <prop key="mvc">struts</prop>    </props>    </property>



    8.
    裝配null:<property name=”onename”> <null/> </property>

     

    三.構(gòu)造函數(shù)的注入方式:a. public class Address {   private String street; }

    b.public class Person {   private String name; 

       private Address address;   private Integer age; public Person() {  }

    public Person(String name, Address address) {

    this.name = name;    this.address = address;  }

     c. <bean id="person" class="assemble.Person">

         <constructor-arg index="0" value="liming"></constructor-arg>

         <constructor-arg index="1">

           <bean class="assemble.Address">

             <property name="street" value="hefei"></property>    </bean>

         </constructor-arg>

         <property name="age" value="22"></property>   </bean> // 可混合使用

    d:通過ApplicationContext進行查找   //預先注入方式

    ApplicationContext ctx=new ClassPathXmlApplicationContext(“mypack/ClassName”);

    ClassName name=( ClassName) ctx.getBean("className "); 

     


    .自動裝配方式:主要是byNamebyType, 其他如constructor較少

      1.a.如果存在: <bean id="message" class="assemble.Message">

         <property name="content" value="control content"></property>  </bean>

    b.byName: <bean id="printer" class="assemble.PrinterImpl" >

                    <property name="message" ref="message"></property>  </bean>

    因為需要注入的屬性名和存在的要引用bean的名稱相同,所以可以用byName自動查找

    <bean id="printer" class="assemble.PrinterImpl" autowire="byName"/>

       2.byType:在容器中尋找一個與需要自動裝配的屬性類型相同的bean,如果找到超過一個相符的bean就會拋出異常.

    :如果配置文件中所有的bean的自動裝配方式相同,可以在<beans>根節(jié)點聲明以減少代碼,如果在自動裝配方式中再通過set方式注入,set方式會覆蓋autowire.

     

    :spring持久化支持:為整合如jdbc會拋出SQLException,Hibernate拋出HibernateException

    1.springDateAccessException:a.與特定持久化技術(shù)和實現(xiàn)無關

      b.應用與持久層框架解藕      c.RuntimeException,不需要強制捕獲  

    posted on 2007-08-16 21:43 mrklmxy 閱讀(2105) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 日本不卡视频免费| 免费看片在线观看| 久久亚洲国产精品123区| 亚洲日韩中文在线精品第一| 亚洲youwu永久无码精品| 成人免费看吃奶视频网站| 亚洲自偷自偷在线成人网站传媒| 日产久久强奸免费的看| 免费无遮挡无码永久视频| 日本免费一二区在线电影| 亚洲精品9999久久久久无码 | 国产午夜精品久久久久免费视 | 免费A级毛片av无码| 亚洲伊人色一综合网| 最近最新中文字幕完整版免费高清| 亚洲AV无码无限在线观看不卡| a在线观看免费网址大全| 国产一级理论免费版| 免费无码国产V片在线观看| 亚洲精品成人久久久| 成人无码WWW免费视频| 亚洲福利电影在线观看| 在线观看免费黄色网址| 亚洲成AV人片在线观看无码| 69式国产真人免费视频| 国产精品亚洲一区二区三区在线观看| 91福利视频免费观看| 亚洲人成77777在线播放网站不卡| 日本一道综合久久aⅴ免费| 国产精品午夜免费观看网站| 日韩免费观看视频| 日韩免费高清播放器| 亚洲乱码一二三四区乱码| 亚洲免费在线视频播放| 鲁死你资源站亚洲av| 亚洲精品国产美女久久久| 99热在线精品免费全部my| 亚洲AV无码成人精品区蜜桃| 在线看片免费不卡人成视频| 羞羞视频免费网站入口| 久久亚洲春色中文字幕久久久|