Spring的知识点
开发工具与关键技术:知识点总结
作者:昨夜星辰
撰写时间:2020年12 月28 日
Spring框架由Rod Johnson开发, Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。
一、Spring的一些优点:
- 低侵入式设计,代码的污染极地。
- 独立于各种应用服务器,基于spring框架的应用,可以真正实现write once,Run Anywhere的承诺。
- Spring的IOC容器降低了业务对像的复杂性,提高了组件之间的解耦。
- Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中管理,从而提供了更好的复用。
- Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层到的数据库的访问。
- Spring的高度开放性,并不强调应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。
二、Spring的三大核心
(1)IOC(控制反转) 实现将组件间的关系从程序内部提到外部容器(spring容器)来管理。
(2)DI(依赖注入) 组件之间的依赖关系由容器在应用系统运行期来决定, 也就是由容器动态地将某种依 赖关系的目标对象实例注入到应用系统中的各个关联的组件之中
(3) AOP(面向切面编程) 利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共 行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就 是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统 的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。 使用"横切"技术,AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处 理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个 特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日 志、事物。AOP的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分 离开来。
三、Spring Bean的作用域,Spring容器中的bean可以分为5个范围
(1)singleton:范围默认,这种范围不管接收多少个请求,每个容器只有一个bean的实例,单利
的模式,由factory自身维护。
(2)prototype:为每一个bean请求提供实例
(3)request在请求bean范围内为每一个我来自客户端的网络请求创建一个实例,在请求完成后,bean失效并会被垃圾回收。
(4)Session确保每个session中有一个实例,在session过期后,备案会随之失效。
(5)global-session:global-session和protlet应用相关。当你的应用部署容器工作时,它包含很多protlet.如果想要声明让所有的protlet共用全局的储存变量的话,那么全局变量需要储存在global-session中。
四、Bean元素中的一些常用的属性
1、id:是一个Bean的唯一标识符,Spring容器对Bean的配置和管理都通过该属性完成。
2、name:Spring容器同样可以通过其属性对容器对Bean的配置和管理,name属性中可以为bean指
定多个名称,每个名称之间用逗或分号隔开。
3、class:该属性指定了bean的具体实现类,它必须是一个完整的类名,使用类的权限定名。
4、scope 用于设定 Bean 实例的作用域,其属性值有 singleton(单例)、prototype(原 型)、request、
session 和 global Session。其默认值是 singleton。
5、constructorarg 元素的子元素,可以使用此元素传入构造参数进行实例化。该元素的 index 属性
指定构造参数的序号(从 0 开始),type 属性指定构造参数的类型。
6、property 元素的子元素,用于调用 Bean 实例中的 Set 方法完成属性赋值,从而完成依赖 注入。
该元素的 name 属性指定 Bean 实例中的相应属性名。
7、ref 和 等元素的子元素索引,该元素中的 bean 属性用于指定对 Bean 工厂中某个 Bean 实例
的引用。
8、value 和 等元素的子元素,用于直接指定一个常量值。
9、list 用于封装 List 或数组类型的依赖注入。
10、set 用于封装 Set 类型属性的依赖注入。
11、set 用于封装 Set 类型属性的依赖注入。
12、map 用于封装 Map 类型属性的依赖注入。
13、entry 元素的子元素,用于设置一个键值对。其 key 属性指定字符串类型的键值,ref 或 value
子元素指定其值。
五、Spring的核心注解
@Repository持久层(dao层)@Service 服务层(service层)
@Controller 控制层 @component (把普通pojo实例化到spring容器中)
@Autowired (IOC自动装配,默认按照类型)
@Resource (IOC自动装配,默认按照名称,再按类型)
六、事务的4个特性
1、原子性(Atomic):事务是由一个或多个活动所组成的一个工作单元。原子确保事务中的所有操
作全部发生或全部不发生。如果所有的活动都成功了,事务也就成功了。如果任意一个活动失
败了,整个事务也失败并回滚。
2、一致性(Consistent):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处
于一致的状态。现实的数据不应该被损坏。
3、隔离性(Isolated):事务允许多个用户对相同的数据进行操作,每个用户的操作不会与其他用
户纠缠在一起。因此,事务应该被彼此隔离,避免发生同步读写相同数据的事情(注意的是,
隔离性往往涉及到锁定数据库中的行或表)。
4、持久性(Durable):一旦事务完成,事务的结果应该持久化,这样就能从任何的系统崩溃中恢复 过来。这一般会涉及将结果存储到数据库或其他形式的持久化存储中。