posts - 165, comments - 198, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          spring 學習筆記

          Posted on 2007-12-21 16:33 G_G 閱讀(466) 評論(0)  編輯  收藏 所屬分類: Spring
          我 的 春天spring 正式開始 !^_^
          spring項目基本需要jar->commons-logging.jar;log4j-1.2.9.jar;spring.jar
          參考:http://www.redsaga.com/spring_ref/2.0/html/beans.html

          本文主要內容:
          1.單多配置文件的使用
          2.動態替換類方法(cglib)
          3.
          自定義作用域bean
          4.定制bean特性


          1).單多配置文件的使用
          1.1)配置文件:beans.xml格式(基本配置)
          <?xml?version="1.0"?encoding="UTF-8"?>
          <!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?
          ????"http://www.springframework.org/dtd/spring-beans.dtd"
          >
          <beans>
          ????
          <bean?id="userBean"?name="userBean"?
          ??????????class
          ="springtest.UserBean"?
          ??????????abstract
          ="false"?
          ??????????singleton
          ="true"?
          ??????????lazy-init
          ="default"
          ??????????autowire
          ="default"?
          ??????????dependency-check
          ="default"?>
          ????????????
          <property?name="name">
          ????????????????
          <value>bea</value>
          ????????????
          </property>
          ????
          </bean>
          ????
          </beans>

          spring 工廠建立單配置和多配置文件
          ??? //單配置文件加載
          ??? public
          ?void?testSp()throws?Exception{
          ????????Resource?res?
          =?new?FileSystemResource(
          ????????????
          this.getClass().getClassLoader().getResource("config/beans.xml").getPath()
          ????????????????);
          ????????BeanFactory?fac?
          =?new?XmlBeanFactory(res);
          ????????UserBean?uu?
          =?(UserBean)?fac.getBean("userBean");
          ????????System.out.println(uu.getName());
          ????????System.out.println(uu.getAge());
          ????}
          ??? //多配置文件加載
          ????public?void?testSps()?throws?Exception?{
          ????????ApplicationContext?act
          =new?ClassPathXmlApplicationContext(
          ??? ??? ???
          new?String[]?{"config/beans.xml",.....}
          ??? ??? );
          ????????UserBean?uu?
          =?(UserBean)act.getBean("userBean");
          ????????System.out.println(?uu.getName());
          ????}
          1.2) 還用一種是單配置多<import resource="。.xml"/>達到多配置
          <?xml?version="1.0"?encoding="UTF-8"?>
          <!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?
          ????"http://www.springframework.org/dtd/spring-beans.dtd"
          >
          <beans>
          ????
          <import?resource="beans_2.xml"/>
          ????
          <bean?id="userBean"?name="userBean"?
          ??????????class
          ="springtest.UserBean"?
          ??????????abstract
          ="false"?
          ??????????singleton
          ="true"?
          ??????????lazy-init
          ="default"
          ??????????autowire
          ="default"?
          ??????????dependency-check
          ="default"?>
          ????????????
          <property?name="name">
          ????????????????
          <ref??bean="str1"/>
          ????????????
          </property>
          ????
          </bean>
          </beans>

          加載就用上的 -》
          單配置文件加載

          2).動態替換類方法(cglib)
          配置文件中 替換方法(替換方法 getName ) lib中加入 cglib.jar
          <?xml?version="1.0"?encoding="UTF-8"?>
          <!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?
          ????"http://www.springframework.org/dtd/spring-beans.dtd"
          >
          <beans>
          ????
          <import?resource="beans_2.xml"/>
          ????
          <bean?id="userBean"?name="userBean"?
          ??????????class
          ="springtest.UserBean"?
          ??????????abstract
          ="false"?
          ??????????singleton
          ="true"?
          ??????????lazy-init
          ="default"
          ??????????autowire
          ="default"?
          ??????????dependency-check
          ="default"?>
          ??????????????
          <replaced-method?name="getName"?replacer="rm">
          ??????????????????
          <arg-type>String</arg-type>
          ??????????????
          </replaced-method>

          ????????????
          <property?name="name">
          ????????????????
          <ref??bean="str1"/>
          ????????????
          </property>
          ????
          </bean>
          ????
          ????
          <bean?id="rm"?class="springtest.ReplacedMethod"/>
          </beans>

          springtest.ReplacedMethod類
          package?springtest;

          import?java.lang.reflect.Method;

          import?org.springframework.beans.factory.support.MethodReplacer;

          public?class?ReplacedMethod?implements?MethodReplacer?{
          ????
          ????
          public?Object?reimplement(Object?arg0,?Method?arg1,?Object[]?arg2)?throws?Throwable?{
          ????????
          return?"劉凱毅";
          ????}
          }

          結果: 不管你怎么setName getName出來的都是-》 “劉凱毅”

          3.自定義作用域bean 需要jdk1.5


          4.定制bean特性
          1)初始化回調 <bean id=".." class=".." init-method="init"/> 方法init()
          ? 和 繼承org.springframework.beans.factory.InitializingBean 實現接口方法
          ??? void afterPropertiesSet() throws Exception; 一樣
          2)

          主站蜘蛛池模板: 扬州市| 徐汇区| 吉林省| 射洪县| 莱芜市| 凭祥市| 嘉义县| 乌恰县| 岚皋县| 遂溪县| 丽水市| 托里县| 德阳市| 锡林郭勒盟| 湘西| 临沂市| 固安县| 库伦旗| 武隆县| 托克托县| 乐至县| 临西县| 十堰市| 两当县| 兴城市| 上蔡县| 白朗县| 同心县| 建德市| 新郑市| 宁远县| 阿克陶县| 正镶白旗| 芜湖市| 满城县| 大名县| 千阳县| 栾城县| 绥江县| 萨嘎县| 宜都市|