008java的Ioc和AOP实现举例
一、IoC代码举例
(1)cat Main.java
public class Main {
private MessageService messageService;
public Main(MessageService messageService) {
this.messageService = messageService;
}
public static void main(String[] args) {
Main main = new Main(new MessageServiceImpl());//通过构造函数注入依赖:
System.out.println(main.messageService.getMessage());
}
}
(2)cat MessageServiceImpl.java
public class MessageServiceImpl implements MessageService {
@Override
public String getMessage() {
return "Hello Arun!";
}
}
(3)cat MessageService.java
public interface MessageService {
String getMessage();
}
二、AOP代码举例
(1)cat AopTest.java
import java.lang.reflect.Proxy; public class AopTest { public static void main(String[] args) { Calculator calculator = new CalculatorImpl(); Calculator proxy = (Calculator) Proxy.newProxyInstance( calculator.getClass().getClassLoader(), calculator.getClass().getInterfaces(), new CalculatorInterceptor(calculator)); proxy.add(1, 2); } }
(2)cat Calculator.java
public interface Calculator { int add(int a, int b); }
(3) cat CalculatorImpl.java
public class CalculatorImpl implements Calculator {
@Override
public int add(int a, int b) {
return a + b;
}
}
(4)cat CalculatorInterceptor.java
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class CalculatorInterceptor implements InvocationHandler { private Object target; public CalculatorInterceptor(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("Before method execution"); Object result = method.invoke(target, args); System.out.println(result); System.out.println("After method execution"); return result; } }

浙公网安备 33010602011771号