spring理解总结

spring主要是两个点:1、控制反转IOC,2、面向切面AOP。

控制反转(Inversion of Control)

主要是指创建对象的方式,在程序中,如果要调用一个方法,首先是先创建对象,通过对象调用方法。   假设多个类都实现了一个接口,且这些类都会被使用,在业务中就需要频繁更改代码,因为要创建不同的对象来实现不同的方法。  由程序来创建对象。    spring则是用xml、注解等方法,由spring来进行对象的创建, 程序由主动创建对象变为被动的接收对象。如果要实现不同的方法,不需要再改代码,只需要修改xml文件就可以了。在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象 .

引用狂神说:::我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。      要实现不同的操作 , 只需要在xml配置文件中进行修改 , 所谓的IoC,一句话搞定 : 对象由Spring 来创建 , 管理 , 装配 !

依赖注入DI:(Dependency Injection,DI)。

依赖注入可以理解成是控制反转的一种方法, 为初始化对象赋值。

Spring中bean有三种装配机制,分别是:

  1. 在xml中显式配置;

  2. 在java中显式配置;

  3. 隐式的bean发现机制和自动装配。

这里我们主要讲第三种:自动化的装配bean。

Spring的自动装配需要从两个角度来实现,或者说是两个操作:

组件扫描(component scanning):spring会自动发现应用上下文中所创建的bean;

自动装配(autowiring):spring自动满足bean之间的依赖,也就是我们说的IoC/DI; 

使用注解要开启注解支持 <context:annotation-config/>

1、@autowired:按类型自动转配,ByType的方式

2、@autowired和@qualifier配合使用,可以根据byName的方式进行自动装配,@qualifier不能单独使用。

3、@Resource,先按照ByName的方式,在按照ByTYpe的方式

它们的作用相同都是用注解方式注入对象,但执行顺序不同。@Autowired先byType,@Resource先byName。

 

使用bean的标签进行bean的注入,实际开发中,一般都会使用注解。

<!--指定注解扫描包--><context:component-scan base-package="com.kuang.pojo"/>

@Component在类上添加,意思是该类已经被spring托管了,不需要再在bean中注入了。

@Component三个衍生注解

为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样。

  • @Controller:web层

  • @Service:service层

  • @Repository:dao层

写上这些注解,就相当于将这个类交给Spring管理装配了!

 

面向切面AOP

对于静态代理和动态代理的理解。。。

 

 在不改变原来的代码的情况下,实现了对原有功能的增强,这是AOP中最核心的思想

使用切面时需要导入依赖包 

使用注解实现时,要注意添加支持注解的配置

<!--第三种方式:注解实现--> <bean id="annotationPointcut" class="com.kuang.config.AnnotationPointcut"/> <aop:aspectj-autoproxy/>

 

posted @ 2020-09-23 10:18  行人逆旅  阅读(170)  评论(0)    收藏  举报