Spring笔记——初识Spring
来源:互联网 发布:js删除节点的方法 编辑:程序博客网 时间:2024/05/24 06:45
一、Spring简单介绍
Spring是一个开源框架,是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。
Spring用bean或JavaBean来表示应用组件,但并不意味着Spring组件必须要遵循JavaBean规范。一个Spring组件可以是任何形式的POJO。
Spring不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测性和松耦合等方面从Spring中获益。
二、Spring关键策略
Spring的使命是简化Java开发,为了降低Java开发的复杂性,Spring采用了以下4种关键策略:
1、基于POJO 的轻量级和最小侵入性编程;
理解:
基于POJO很好理解,Spring都是把类转换成bean,通过操作bean实现编程目标。最小侵入性编程,即对转换成Spring bean的组件类(姑且这么称吧)改动很少,几乎无形中操控这些类。
2、通过依赖注入和面向接口实现松耦合;
理解:
依赖注入,即一个类A的成员变量是另一个类B,则应该编写一个函数,将类B的对象作为形参传入,这即是注入,而不是在类A的内部new一个类B。面向接口编程,即组件类只关注它要实现的功能,以及注入的类已经实现的功能,也即类A只需关注如何使用成员变量B实现A应该实现的功能,至于B的功能得实现细节,A不需要知道,相当于接口,之后便是Spring通过XML或其它方式配置组件A(也即类A)与组件B(也即类B)的注入关系。
3、基于切面和惯例进行声明式编程;
理解:
什么是切面?也就是一个基础组件,它被许多其它组件引用但却不是那些组件的核心功能或业务,可以以接口的作用理解,如:组件A、B、C都要用到组件d的功能,但A、B、C有各自的核心业务,为了简化将组件d的功能与他们各自的功能分离开,以使各自业务更加明确,就可以将组件d声明为一个切面(有固定的语法),便不需要在A、B、C的内部显示的调用组件d的条件下,同样实现A、B、C执行某些操作后自动执行d的功能(所以我觉得前提应该是,A、B、C组件都只是操作d执行了d自身方法,且该方法不带与A、B、C相关参数,不然是具有依赖性的。注意并不是简单的把重复代码拿出来作为一个模块,因为只是拿出来还是会有调用,但切面不需要再在A、B、C里面执行d的某个方法)。可类比为数据库的procedure,在修改表A、B、C前/后自动更新d表。
声明式编程,Spring提供了一些声明语法,如:@component声明一个java类为Spring bean组件。通过声明而无需继承Spring的类便可使用Spring功能。
4、通过切面和模板减少样板式代码。
理解:
第3条已经简单描述了切面,它就是一些通用的,但是使用地方比较多的方法,自然完成的就不是核心业务,所以单独拿出来,声明为切面,减少代码重复。
至于模板,Spring里面提供了一些模板jar包,如JDBC、JMS、ORM等模块就提供一些模板。
三、几个名词
依赖注入:DI(Dependency Injection);
面向切面编程:AOP(Aspect Oriented Programming);
Java消息服务API:JMS(Java Message Service);
对象关系映射:ORM(Object Relationship Mapping,或简称O/RM),如Hibernate、Mybatis就是一些处理ORM的框架。
- Spring笔记——初识Spring
- Spring学习笔记2——初识Spring MVC
- Spring boot学习笔记 001——初识Spring boot
- Spring学习笔记(1)——初识Spring
- Spring(1)—初识
- 【Spring笔记】1.初识Spring
- 菜鸟学习Spring——初识Spring
- Java框架学习笔记——初识Spring之简述
- Spring4.0学习笔记002——Spring应用初识
- 初识Spring——whySpring
- 初识Spring——AOP
- 001——初识Spring
- Spring学习笔记(1)---------初识Spring
- 初识spring——控制反转
- Spring揭秘(十)——初识AOP
- 初识spring
- 初识Spring
- 初识Spring
- java cookie用法
- 动态 | 时隔一年卷土重来,强化版AlphaGo的制胜棋艺能再续辉煌吗?
- 名企笔试:网易2017内推笔试编(星际穿越) 2017-03-29 算法爱好者
- 拿到当前被调用代码所在的类名
- ZOJ2967-Colorful Rainbows
- Spring笔记——初识Spring
- 理解Python 中的 with 语句
- selenium webdriver学习 -怎么等待页面元素加载完成
- 高斯消元裸题(期望)——【HNOI2013】游走
- python学习笔记3
- Centos常用网络配置
- 高中老班(班主任)的经典语录
- TOMCAT的虚拟化配置
- [高精度](JZOJ)开关灯泡