首页 > 编程语言 > 详细

Spring学习笔记(一)

时间:2020-01-29 13:55:14      阅读:70      评论:0      收藏:0      [点我收藏+]

初识Spring

什么是Spring

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

为什么要用Spring

在传统的JAVA开发过程中,我们可能会写出类似下面这些代码:

public class BookManage {  
    public List<Books> queryAllBooks(){
        BookDao dao=new BookImpl();
        List<Books> ls=dao.queryAll();
        return ls;
    }
    public boolean deleteBook(String id){
        BookDao dao=new BookImpl();
        boolean issuccess=false;
        if(dao.deleteBook(id)>0){
            issuccess=true;
        }
        return issuccess;
    }
}

这种代码有一个很大的弊端:我们每调用一次这些方法都会实例化一个新的BookImpl对象,这显然是不必要的。为此,我们可以对它作出改进:

依赖注入

public class BookManage {    
    public List<Books> queryAllBooks(BookDao dao){
        List<Books> ls=dao.queryAll();
        return ls;
    }
    public boolean deleteBook(String id, BookDao dao){
        boolean issuccess=false;
        if(dao.deleteBook(id)>0){
            issuccess=true;
        }
        return issuccess;
    }
}

我们可以看到,这次代码不同于上面代码的是,所依赖的对象是作为参数传进来的。类似于这种方式,把所依赖的对象交给容器管理,只提供普通的Java方法让容器去决定依赖关系。容器全权负责的组件的装配,它会把符合依赖关系的对象通过JavaBean属性或者构造函数传递给需要的对象。这种方式称为依赖注入。

控制反转

在前一个代码中,所依赖对象由方法主动创建,其控制权在BookManage对象中。采用依赖注入后,容器全权负责组件的装配,控制权交到了容器手中,称为控制反转。

面向切面

在生活中,你可能会遇到这种情况:你去一个酒店就餐,在你进酒店之前,服务员会说“您好,欢迎光临”,而在你就餐完毕出酒店后,服务员会说“请慢走,欢迎您的下次光临”。把这一事件写成程序,可能会类似下面代码:

public class Waiter {       //服务员类
    public void beforeYouCome(){    //你进酒店之前调用的方法
        System.out.println("您好,欢迎光临");
    }
    public void afterYouLeave(){        //你出酒店之后调用的方法
        System.out.println("请慢走,欢迎您的下次光临");
    }
}

public class Guest {        //客人类
    Waiter waiter = new Waiter();
    public void goToRestaurant(){
        waiter.beforeGuestCome();
        System.out.println("进行就餐");
        waiter.afterGuestLeave();
    }
}

你仔细想想的话可能会发现,服务员的问候事件应该由客人来管理吗?这显然是不合理的。为此,面向切面应运而生。在使用面向切面编程时,我们仍在一个地方定义通用功能,但是可以通过声明的方式定义这个功能要以何种方式在何处应用,而无需修改受影响的类。在本例中,我们可以将客人声明为切点,将服务员声明为切面。在面向切面术语中,切面的工作被称为通知,通知定义了切面是什么以及何时使用。

Spring学习笔记(一)

原文:https://www.cnblogs.com/miou/p/12240106.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!