<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)站導航:
     
    主站蜘蛛池模板: 色屁屁www影院免费观看视频| 天天影院成人免费观看| 久久99免费视频| 久久久久免费看黄A片APP| 亚洲国产精品人人做人人爱| 亚洲av女电影网| 亚洲熟妇自偷自拍另欧美| 一级毛片免费播放男男| 69pao强力打造免费高清| jizzjizz亚洲| tom影院亚洲国产一区二区| 成人免费网站久久久| 在线永久免费的视频草莓| 久久影视综合亚洲| 亚洲高清视频在线| 国产一区二区免费视频| 国产免费午夜a无码v视频| 久久精品a亚洲国产v高清不卡 | 亚洲国产精品久久久久久| 亚洲精品蜜夜内射| 99re在线精品视频免费| 亚洲区小说区图片区| 亚洲精品人成网线在线播放va| 91人成网站色www免费下载| 免费大黄网站在线看| 亚洲日本va在线观看| 外国成人网在线观看免费视频| 免费观看亚洲人成网站| 亚洲五月综合网色九月色| 无码中文字幕av免费放dvd| 亚洲午夜福利精品无码| 亚洲精品久久久久无码AV片软件| 99在线热播精品免费99热| 免费大黄网站在线看| 亚洲AV无码一区二区三区鸳鸯影院| 免费观看美女用震蛋喷水的视频| 亚洲国产成人久久综合碰碰动漫3d | 亚洲性线免费观看视频成熟| 亚洲国产国产综合一区首页| 中文字幕乱理片免费完整的| 免费在线看片网站|