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有三种装配机制,分别是:
-
在xml中显式配置;
-
在java中显式配置;
-
隐式的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/>

浙公网安备 33010602011771号