spring用了那麼久,但屬於印象派的我早已經忘了不少,只記得的思想而已,進入參照老同事的博客重新複習了一下,索性也把這些代碼給給複製了下來。
代碼均來自:http://lavasoft.blog.51cto.com/62575/d-4
代碼裏也寫清楚了原文地址,詳細對比着看會放心一些,謝謝熔岩。
spring ioc 簡單示例1
xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 使用setter方式完成依賴注入 --> <bean id="helloBean" class="com.example.test1.HelloBean"> <property name="helloWord"> <value>Hello!Justin!</value> </property> </bean> </beans>
java:
package com.example.test1;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class SpringDemo2 {
public static void main(String[] args) {
// ApplicationContext 是BeanFactory 的擴展,功能得到了進一步增強,比如更易與aop集成、資源處理國際化
/*
* BeanFactory提供的高級配置機制,使得管理任何性質的對象成爲可能。ApplicationContext是BeanFactory的擴展
* ,功能得到了進一步增強,比如更易與Spring
* AOP集成、消息資源處理(國際化處理)、事件傳遞及各種不同應用層的context實現(如針對web應用的WebApplicationContext
* )。簡而言之,BeanFactory提供了配製框架及基本功能,而ApplicationContext則增加了更多支持企業核心內容的功能。
* ApplicationContext完全由BeanFactory擴展而來
* ,因而BeanFactory所具備的能力和行爲也適用於ApplicationContext。
*/
// Spring的創始者Rod
// Johnson建議使用ApplicationContext來取代BeanFactory,在實現ApplicationContext的類中,最常使用的大概是一下三個:
// org.springframework.context.support.ClassPathXmlApplicationContext
// org.springframework.context.support.FileSystemXmlApplicationContext
// org.springframework.web.context.support.XmlWebApplicationContext
ApplicationContext context = new FileSystemXmlApplicationContext(
"classpath:com/example/test1/beans-config.xml");
HelloBean hello = (HelloBean) context.getBean("helloBean");
System.out.print("Word: ");
System.out.println(hello.getHelloWord());
}
}
spring aop 簡單示例1
package com.example.test1;
/**
* 被代理類
*/
class MessageWriter{
/**
* 業務方法
*/
public void writeMessage() {
System.out.print("World");
}
}
package com.example.test1;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
/**
* 實現包圍通知,實際就是方法攔截器,MethodInterceptor是AOP聯盟定義的接口.
*/
class MessageDecorator implements MethodInterceptor {
public Object invoke(MethodInvocation invocation) throws Throwable {
System.out.print("Hello ");
Object retVal = invocation.proceed();
System.out.println("!");
return retVal;
}
}
package com.example.test1;
import org.springframework.aop.framework.ProxyFactory;
/**
* AOP測試
*/
class HelloWorldAOPExample {
public static void main(String[] args) {
// 目標對象(被代理的對象)
MessageWriter target = new MessageWriter();
// 產生一個代理工廠
ProxyFactory pf = new ProxyFactory();
// 添加代理工廠的攔截器
pf.addAdvice(new MessageDecorator());
// 設置被代理對象
pf.setTarget(target);
// 獲取一個代理實例
MessageWriter proxy = (MessageWriter) pf.getProxy();
// 從目標對象直接輸出信息
target.writeMessage();
System.out.println("\n------------");
// 從代理對象輸出信息
proxy.writeMessage();
}
// Spring AOP代理是通過ProxyFactory類來獲取代理對象的。最簡單的過程是:
//
// 1、創建代理工廠:new一個ProxyFactory實例。
// 2、給代理工廠加入通知者:ProxyFactory.addAdvisor(),通知者構建方式很多。
// 3、將目標加入工廠:ProxyFactory.setTarget()設置要代理的對象。
// 4、獲取目標的代理實例:ProxyFactory.getProxy(),通過代理實例來執行被代理的也無法方法。
}
……