1.IOC(说明Spring采用动态、灵活的方式来管理各种对象-工厂模式)
IOC即控制反转,假如A要使用B的方法,一般的做法是先在A中创建B的实例,这种情况称为A依赖于B,而spring提供的ioc功能则是将创建B实例的过程交给了外部容器。即对组件对象的控制器由代码本身转移到了外部容器,其设计思想就是设计模式的工厂模式。这里还有个概念是依赖注入,说的是应用组件不应该负责查找资源或者其他依赖的协作对象,创建被调用者对象的实例应该由spring来完成,然后在注入到调用者中,其实
依赖注入和控制反转是同一个概念
在Spring容器启动的时候,Spring会把你在application.xml中配置好的bean都初始化,在你需要调用的时候,把已经初始化的bean分配给你要调用这些bean的类,而不用去创建一个对象的实例。
Ioc的常见容器是:ApplicationContext和BeanFactory
2.AOP(面向切面编程-代理模式)
面向切面编程的目的是分离关注点,通俗的说是指使用aop你可以一心关注你的正事,而其他的事交给别人处理
从spring的角度看,aop最大的好处是提供的事务管理机制,事务管理就是一个关注点,你的正事就是去访问数据库,而你不想管事务,所以,Spring在你访问数据库之前,自动帮你开启事务,当你访问数据库结束之后,自动帮你提交/回滚事务!
aop的方法:
一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。这里静态织入的原理就是在编译期间,切面直接以字节码形式编译到目标字节码中
AOP的一些关键词
Joinpoint:拦截点,如某个业务方法;
Pointcut:Jointpoint的表达式,表示拦截哪些方法。一个Pointcut对应多个Joinpoint;
Advice:要切入的逻辑。
Before Advice:在方法前切入;
After Advice:在方法后切入,抛出异常时也会切入;
After Returning Advice:在方法返回后切入,抛出异常不会切入;
After Throwing Advice:在方法抛出异常时切入;
Around Advice:在方法执行前后切入,可以中断或忽略原有流程的执行;