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的框架。




0 0
原创粉丝点击