目录
Spring概述
Spring框架是企业使用最多的框架,没有之一。
Spring是一站式框架,也就是Spring可以整合其他框架。
Spring Ioc::对象工厂及依赖注入
Spring AOP:面向切面编程技术,Spring事务管理的基础
Spring Transaction management:Spring事务管理
Spring Web MVC:在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架
Spring Ioc入门
Ioc 是 Inversion of Control 的缩写,即“控制反转”
控制反转:将创建对象的权利,由自己(new)反转给Spring
Ioc详情
3.1Bean创建
在spring 容器中管理的对象,统称为`bean`。例如:UserDao、UserService 等
@Component
-> 将修饰的资源交予Spring管理。value属性:为资源命名(唯一标识)
@Controller
-> 衍生注解,与@component作用和属性相同。特用于修饰表示层的资源
@Service
-> 衍生注解,与Component作用和属性相同。特用于修饰业务逻辑层的资源
@Repository
-> 衍生注解,与Component作用和属性相同,特用于修饰数据访问层的资源
3.2依赖注入(DI)
什么是DI
依赖注入(Dependency Injection,Dl)Spring 容器在创建被调用者的实例时,会自动将调用者需要的对象实例注入给调用者
按照名称注入
按照类型注入
注入简单数据:@Value
简单数据:基本数据类型,字符串等
需要:定义JavaBean对象,给JavaBean对象注入数据
@Value可以给成员变量注入,也可以给属性注入(getter/setter)
properties数据注入
使用@PropertySource("classpath:properties文件")加载properties文件,使用 @Value("${key}")进行注入
3.3@Bean注入第三方类
在实际开发中,有很多第三方提供类(jar包里),需要在spring中使用
Spring提供@Bean注解,整合第三方类
@Bean 修饰的方法,如果有参数,将自动注入。
3.4Bean作用域
bean作用域:一个对象的使用范围
通过@Scope可以设置Bean的作用域
单例常量:@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
多例常量:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
3.5其它注解
@Configuration
用@Configuration注释类表明其主要目的是作为bean定义的源
@Configuration类允许通过调用同一类中的其他@Bean方法来定义bean之间的依赖关系
@ComponentScan
@ComponentScan告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并 且装入bean容器
@RunWith就是一个运行器
@RunWith(JUnit4.class)就是指用JUnit4来运行
@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境
@RunWith(Suite.class)的话就是一套测试集合
@ContextConfiguration
Spring整合JUnit4测试时,使用注解引入多个配置文件
AOP
介绍
AOP:全称是Aspect Oriented Programming即:面向切面编程
面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
也就是,使用代理技术,在不修改代码的基础上,对已有方法进行增强
AOP底层分析
AOP底层采用代理技术
如果使用的类,底层采用CGLIB代理
如果使用的接口+类,底层采用JDK动态代理
相关术语
1,目标类 Target:需要被增强的类,代理的目标对象
2,连接点 Joinpoint:目标类==可能==被增强的每一个方法
3,切入点 Pointcut:特殊的连接点,已经被增强了
4,通知/增强 Advice:增强的方法,需要添加的那段增强功能的逻辑代码
5,切面 Aspect:切入点和通知的结合
6,织入:增强添加到目标类的具体链接点上的过程
7,代理 Proxy:一个类被AOP织入增强后,就产生一个结果代理类
切入点表达式
作用:将通知/增强作用于具体切入点
基本格式:
练习
通知类型
Spring通知共5个分类:前置通知、后置通知、环绕通知、抛出异常通知、最终通知