Posted on 2007-12-21 16:33
G_G 閱讀(462)
評論(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)