springIOC和springAOP

ioc利用的是java反射机制,aop利用代理模式。
springioc是控制反转,最大的好处就是降低了对象之间的耦合度,在一个系统之间有些
具体如何实现的不需要我们理解他。只需要知道她是怎么用的就行了。就可以了。
这里的对象创建依靠的是springioc,而不是开发者主动创造的。主动创建的模式,责任归于
开发者,而在被动创建的话,责任就是ioc容器。基于这样的创建的模式,就说对象呗控制反转

spingioc的作用就是他可以容纳我们开发的各种的Bean,我们可以在容器中获取容器中的Bean.
SpringIOC容器的设计主要是基于BeanFactory和ApplicaionContext.两个接口。是ApplicationContext
是BeanFactory的子接口。但是ApplicationContext对BeanFactory接口的进行了扩展。所以我们我们用xml配置的话,就是用ClassPathXmlApplicationContext来初始化springioc的容器。
接下来就是bean的定义和初始化,这是两个步骤。是先定义,然后初始化的。
根据开发者的配置,我们常用的就是xml或者注解,就是载入后,就会发布在springioc的容器上。这里
及时单纯的定义了。但是并没有被实例创建。然后springBean有一个配置选项就是lazy-init.这就就是
相当于懒加载的作用。他的默认是是defalut。但是实际值就是false.springioc会默认初始化Bean.

 

spring有几种配置方式?
基于xml配置   基于注解配置   基于java配置
如何实现java配置的方式配置java:
Spring对java配置的支持是由@Configuration注解和@Bean注解来实现的,有@Bean注解的方法将会实例化,配置和初始化一个对象,这个对象将有Spring的IOC容器来管理。@Bean声明起到的作用域bean域元素类似。
被@Configuration所注解的类表示这个类的主要目的就是作为bean的定义的资源。被@Configuration声明的类可以通过在同一类的内部调用@bean方法来设置嵌入bean的依赖关系。

 

谈谈你对springAOP的理解:

简单总结一下spring的AOP.
利用一种称为横切的技术。,支持将公共业务提取出来(列如:安全/事务/日志)进行集中管理,面向核心业务编程,
只需要关注业务本身 ,而不用去关注公共业务。使用AOP可以将那些与业务无关,却为 业务模块所共同调用的逻辑会责任封装起来(这里我们比如就是数据库事务一些try,catch,finally。里面就是打开数据库的连接,数据的提交会回滚。我么  业务中穿插着就是数据库的提交和回滚。最后在finally里面关闭SqlSession。).便于减少系统的重复代码。降低模块之前的耦合度。有利于未来可扩展性和可维护性。。

Spring中实现aop的方式有三种,分别为,基于AspectJ注入切面,基于xml配置AOP,基于ProxyFactoryBean和对应的aop实现。
代理实现。但是的底层都是 动态代理实现的。动态代理有JDK代理和CGlib动态代理。AOP默认的是JDK动态代理。
当目标类没有接口 时,也可以在配置文件中配置proxy-target-class=true.只使用CGLIB动态代理。


aop不是Spring所特有的 只是支持Spring支持aop编程的框架之一。。有些aop能够对方法参数进行拦截。有些aop
可以对方法进行拦截。而SpringAOP是一种基于方法的aop拦截。
这是书上的总结:AOP是通过动态代理模式,带来了掌控各个各个对象的切面环境。管理包括日志,数据库事务等操作。让我们拥有可以在反射原有对象方法前正常返回。异常返回事后插入自己的逻辑代码。在一些常用的流程中,‘比如是数据库事务,aop会提供默认默认的逻辑实现。

切面:
选择了连接点,就可以创建切面了。对于动态代理的概念而言,她就是一个拦截器。在Spring中只要你@Aspect
注解了一个类,那么Springioc注解一个类。那么Springioc容器就会认为这是一个切面了。


切点:这是一个告诉Spring AOP在什么时候启动拦截并织入对应的流程中,因为不是所有的开发都需要开启aop。
她往往通过正则表达式进行限定的。


 连接点:spring是方法级别的aop框架,而我们主要也是以某个类的某个方法作为连接点。(比如通过切点的正则表达式去判断是连接点,从而织如对应的通知)用动态代理来说。就是拦截那个方法织如对应的aop通知。


 通知:通知是切面开启后,切面的方法。她根据在代理对象的真实方法前,后的顺序和逻辑区分。。这就拦截器的方法很相近。
spring切面可以应用五种类型的通知
1.前置通知
2.后置通知
3.环绕通知’
4.返回后通知
5.异常通知。

 

 

 

你可能感兴趣的:(springIOC和springAOP)