Spring框架介绍
spring是一个轻量的企业级框架,提供了ioc容器,aop实现,dao/orm支持,web集成等功能,可以将一个数据框架和一个展现框架协调管理。使现有的java ee技术更易用
spring core是框架的最基础部分,提供了ioc特性;spring aop是基于spring core的符合规范的面向切面编程的实现。
Ioc/DI
inversion of control控制反转,也称DI,dependency injection依赖注入
是一种解耦合的编码格式,让组件之间以配置文件的形式组织在一起
spring配置文件时完成组装的主要场所,常用几点包括及其子节点
在spring配置文件中,使用元素来定义Bean(也可称为组件)的实例
bean元素由两个属性:id表示定义的bean实例的名称,id是bean的唯一标识,通过id属性访问bean,bean与bean之间的依赖关系也通过id完成;class表示定义的bean实例的类型
元素用来为实例的属性赋值,属性name表示bean实例的属性名称,value属性用于注入基本数据类型以及字符串类型的值,ref属性用于注入已经定义好的bean
spring提供了设值注入、构造注入等依赖注入方式
设值注入,spring通过setter访问器实现对属性的赋值,使用设值注入时,spring通过javabean的无参构造方法实例化对象,使用灵活,时效性不足
构造注入,spring通过构造方法赋值,时效性好,不够灵活
schema形式,使用不同的命名空间管理不同类型的配置,使得配置文件更具扩展性
使用p命名空间可以简化属性注入的配置,特点是使用属性而不是子元素的形式配置bean的属性,简化bean的配置,即的属性p:代替
可注入的数据类型:直接量(基本数据类型、字符串)、其他bean组件、集合类型的属性(list、set、map、properties)、空字符串和null值
通过注解实现bean组件的定义,进一步减少了配置文件的代码量,用来定义bean组件的注解包括
@compnont作用与在xml配置文件中<bean id=“”class="">
@repository作用标注dao类
@service用于标注业务类
@controller用于标注控制器类
bean组件的装配可以通过@autowired@qualifer@resource实现
@autowired采用按类型匹配的方式为属性自动装配合适的依赖对象,即容器会查找和属性类型相匹配的bean组件。若容器有一个以上类型相匹配的bean时,则可以使用@qualifier指定所需的bean名称
@qualifier
@resource spring默认将name属性的值解释为要注入的bean名称,如果没有显示的指定bean名称,且无法找到与默认bean名称匹配的bean组件,@resource注解自动变为按类型匹配的方式进行装配
使用<context:component-scan>元素扫描包含注解标注的类,获取bean的定义信息,来完成初始化
面向接口编程
开发程序组件时,只要明确关联组件的接口定义,而不用关心具体实现,这就是面向接口编程
AOP:面向切面编程aspect oriented programming
将代码中需要大量重复使用的程序功能抽离,将其独立于业务逻辑实现,以特定的形式,交由spring框架自动执行
简单的说就是在不改变原有程序的基础上为代码段增加新的功能,对其进行增强处理
它的设计思想来源于代理设计模式
一般适用于具有横切逻辑的场合,如访问控制,事务管理,性能检测等
使用aop需要:
jar包资源
面向切面编程主要关注两个问题,在什么位置,执行什么功能。需要在spring中配置
节点1(谁来进行操作):配置进行切面管理的对象(来自于对应的jar包)
节点2(如何操作):配置具体的操作规则(执行什么功能)
节点3(何地执行):配置在什么位置介入操作(在什么位置)
spring提供的增强处理类型包括前置增强、后置增强、异常抛出增强、环绕增强、最终增强等
异常增强,aop:after-throwing,在目标方法抛出异常时织入增强处理。可为各功能模块提供统一的、可拔插的异常处理方案
最终增强<aop:after>,无论方法抛出异常还是正常退出,该增强都会执行,一般用于释放资源
环绕增强<aop:around>,功能最强大的增强处理,目标的方法的全权控制。
通过schema形式将pojo的方法配置成切面,所有标签包括<aop:aspect><aop:before>
aop:after-returningaop:aroundaop:after-throwingaop:after等
使用注解方式定义切面可以简化配置工作,常用注解有@aspect@before@afterreturning@around@afterthrowing@after等
切入点表达式使用@pointcut注解表示
aspectj是一个面向切面的框架,它扩展了java语言,定义了aop语法,能够在编译期提供代码的织入,它提供一个专门的编译器用来生成遵守字节编码规范的class文件
通过配置文件中添加aop:aspectj-autoproxy元素,就可以启用对于aspectj注解的支持
本文详细介绍了Spring框架的核心特性,包括IOC/DI(控制反转和依赖注入)以及AOP(面向切面编程)。文章阐述了Spring如何通过配置文件或注解实现bean的定义和装配,讲解了不同类型的依赖注入方式,如设值注入和构造注入。此外,还深入探讨了AOP的概念和应用场景,以及如何在Spring中配置和使用切面。
423

被折叠的 条评论
为什么被折叠?



