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

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

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

    Java綠地(~ming~)

    Java 草地

    常用鏈接

    統計

    最新評論

    Spring的注入方式

    Spring

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


    二.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創建和分發:

    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是不會加載的,因為創建多個實例就不需要了

    初始化的順序:構造函數(沒有就默認-àsetter-àinit-method



    3.
    內部類:<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會自動區分

           <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>

     

    三.構造函數的注入方式: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>根節點聲明以減少代碼,如果在自動裝配方式中再通過set方式注入,set方式會覆蓋autowire.

     

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

    1.springDateAccessException:a.與特定持久化技術和實現無關

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

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


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲一区在线视频| 亚洲avav天堂av在线不卡| 国产成人精品亚洲2020| 欧洲一级毛片免费| 色婷婷亚洲十月十月色天| 日韩人妻无码精品久久免费一 | 亚洲人成色7777在线观看不卡| 亚洲AV无码成人精品区狼人影院| 成年人在线免费看视频| 国产精品亚洲а∨天堂2021| 又黄又爽无遮挡免费视频| 一级一看免费完整版毛片| 亚洲日本一区二区三区在线| 中文成人久久久久影院免费观看| 亚洲高清国产AV拍精品青青草原| 日韩免费视频一区二区| 亚洲美免无码中文字幕在线| 一个人免费观看视频www| 久久亚洲AV成人无码国产电影 | 国产精品免费视频播放器| 国产亚洲男人的天堂在线观看| 亚洲一级黄色视频| 亚洲a一级免费视频| 亚洲国产综合自在线另类| 日本大片在线看黄a∨免费| 男女啪啪免费体验区| 久久久无码精品亚洲日韩蜜桃| ww4545四虎永久免费地址| 亚洲AV无码AV吞精久久| 最新国产AV无码专区亚洲| 18禁无遮挡无码国产免费网站| 亚洲天堂2017无码中文| 亚洲性久久久影院| 最近中文字幕完整免费视频ww| 国产精品亚洲精品| 中文字幕亚洲日本岛国片| 18级成人毛片免费观看| 无码天堂va亚洲va在线va| 亚洲国产高清视频| 国产一级做a爱免费视频| 久久狠狠躁免费观看2020|