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;
    }

}

 

 

 

 

 
posted @ 2023-08-05 18:28  arun_python  阅读(35)  评论(0)    收藏  举报