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

          spring 學(xué)習(xí)筆記

          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

          本文主要內(nèi)容:
          1.單多配置文件的使用
          2.動態(tài)替換類方法(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"/>達(dá)到多配置
          <?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).動態(tài)替換類方法(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?"劉凱毅";
          ????}
          }

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

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


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

          主站蜘蛛池模板: 临沧市| 新竹市| 涪陵区| 威远县| 莲花县| 东明县| 墨竹工卡县| 卢龙县| 塘沽区| 革吉县| 博白县| 柘荣县| 依兰县| 资阳市| 甘南县| 高陵县| 吉水县| 景洪市| 寿宁县| 宜君县| 吉安县| 贵定县| 卢湾区| 汕尾市| 东丽区| 嘉善县| 巴青县| 新闻| 香港| 左权县| 大足县| 吴堡县| 皮山县| 察哈| 陇西县| 兴义市| 海阳市| 睢宁县| 鄂托克前旗| 报价| 江口县|