Spring:AOP思想学习

2020-10-27  本文已影响0人  掌灬纹

AOP:面向切面,原生思想来自代理模式的拓展,追溯源头设计模式的思想都来自与面向对象程序设计原则,即第一个原则 开闭原则:对新功能开放,对源代码修改闭

代理模式(静态代理)

实际开发中代理模式的使用

// 抽象描述一个web项目中 对用户的操作
// 1.抽象的接口
public interface UserService {
// 增删改查
    public void add(); 
    public void del();
    public void update();
    public void query(); 
}

// 2.真实对象
public class UserServiceImpl implements UserService{
    @Override
    public void add() {
        System.out.println("增加用户");
    }

    @Override
    public void del() {
        System.out.println("删除用户");
    }

    @Override
    public void update() {
        System.out.println("修改用户");
    }

    @Override
    public void query() {
        System.out.println("查找用户");
    }
}

// 3.代理对象
public class UserServiceProxy{
    private UserService userService;


    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    /***
     * 拓展方法 debug
     * @param msg
     */
    public void printLog(String msg){
        System.out.println("[Debug] " + msg);
    }

    /**
     * 代理 管理调用 真实角色方法
     */
    public void add() {
        printLog("add()");
        userService.add();
    }

    public void del() {
        printLog("del()");
        userService.del();
    }

    public void update() {
        printLog("update()");
        userService.update();
    }

    public void query() {
        printLog("query()");
        userService.query();
    }
}

// Spring bean xml注入 
    <bean id="userService" class="com.ht.demo02.UserServiceImpl"/>

    <bean id="userServiceProxy" class="com.ht.demo02.UserServiceProxy">
        <property name="userService" ref="userService"/>
    </bean>


// 4. 用户测试
public class Test {

    public static void main(String[] args) {

         // java
        UserService userService = new UserServiceImpl();
        UserServiceProxy proxy = new UserServiceProxy();
        proxy.setUserService(userService);
        proxy.add();

        // spring
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        UserServiceProxy userServiceProxy = context.getBean("userServiceProxy", UserServiceProxy.class);
        userServiceProxy.add();
    }
}


上一篇下一篇

猜你喜欢

热点阅读