精通Spring4.x 第一章 Spring概述

认识Spring

Spring是分层的Java SE/EE应用一站式的轻量级开源框架,以IoC(Inverse of Control 控制反转)和AOP(Aspect Oriented Programming,
切面编程)为内核,提供了展现层Spring MVC,持久层Spring JDBC以及业务层事务管理等一站式的企业级应用技术。此外,还整合了开源世界的众多著名的第第三方框架和类库,逐渐成为使用最多的轻量级Java EE企业应用开源框架。

Spring的好处:

方便解耦,简化开发。通过Spring提供的IoC容器,用户可以将对象之间的依赖关系交给Spring控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单例模式,属性文件解析等这些底层的需求编写代码,可以更专注于 上层的应用。

AOP编程的支持。通过Spring提供的AOP功能,方便进行切面编程,很多不容易用传统OOP实现的功能可以通过AOP轻松应对。

声明式事务的支持。在Spring中,用户可以从单调烦闷的事务管理代码中解脱出来,通过声明的方式灵活的进行事务管理,提高开发效率和质量。

方便程序的测试。可以用非容器依赖的编程方式进行几乎所有的测试工作。在Spring里,测试不再是昂贵的操作,而是随手可做的事情。

方便集成各种优秀框架。Spring提供了对众多优秀开源框架直接或间接的支持。

降低Java EE API的使用难度。Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄层封装,通过Spring的简易封装,这些Java EE API的使用难度大大降低。 

 

Spring体系结构

精通Spring4.x 第一章 Spring概述_第1张图片

整个Spring框架按其所属功能可以划分成5个主要模块。

1.IoC 

它将类与类之间的依赖从代码中脱离出来,用配置的方式惊醒依赖关系描述,由IoC容器负责依赖类之间的创建,拼接,管理,获取等工作。BeanFactory接口是Spring框架的核心接口,它实现了容器许多核心的功能。

Context模块构建于核心模块之上,扩展了BeanFactory的功能,添加了il8n国际化,Bean生命周期控制,框架事件体系,资源加载透明化等多项功能。此外,改模块还提供了众多企业级服务的支持,如邮件服务,任务调度,JNDI获取,EJB集成,远程访问等。ApplicationContext是Context模块的核心接口。

表达式语言模块是提供同意表达式语言(Unified EL)的一个扩展,该表达式语言用于查询和管理运行期的对象,支持设置/获取对象属性,调用对象方法,操作数组和集合等。此外,该模块还提供了逻辑表达式运算,变量定义等功能,可以方便地通过表达式串和Spring IoC容器进行交互。

2.AOP

AOP是继OOP之后,对编程涉及思想影响极大的技术之一。AOP是进行横切逻辑编程的思想,它开拓了考虑问题的思路。在AOP模块里,Spring提供了满足AOP Alliance(AOP联盟)的规范实现,还整合了AspectJ这种AOP语言及的框架。在Spring里实现AOP编程有众多选择。Java5.0引入了java.lang.instrument,允许在JVM启动时启用一个代理类,通过该代理类在运行期修改类的字节码,改变一个类的功能,从而实现AOP的功能。

3.数据访问和集成

仍和应用程序的核心问题都是对数据的访问和操作。Spring站在DAO的抽象层面,建立了一套面向DAO层的统一的异常体系,同时将各种数据访问的检查型异常转换成非检查型异常,为整合各种持久层框架提供基础。其次,Spring通过模板化技术对各种数据访问技术进行了薄层封装,将模式化的代码隐藏起来,使数据访问的程序得到大幅简化。这样,Spring就建立棋类和数据形式及访问技术无关的统一的DAO层,借助AOP技术,Spring提供了声明式事务的功能。

4.Web及远程操作

该模块建立在Application Context模块之上,提供了Web应用的各种工具类,如通过Listener或Servlet初始化Spring容器,将Spring容器注册到Web容器之中,该模块还提供了多项面向Web的功能,如透明化文件上传,Velocity,FreeMaker,XSLT的支持。此外,Spring可以整合Strust,WebWork等MVC框架

5.Web及远程访问

Spring自己提供了一个完整的类似于Struts的MVC框架--Spring MVC。当然Spring对Struts,WebWork等MVC框架也提供整合支持。

6.WebSocket

WebSocket提供了一个在Web应用中高效,双向的通信,需要考虑到客户端和服务器之间的高频和低时延消息的交换。

Spring4.0对Java版本的要求及新特性

Spring4.0基于Java6.0,全面支持Java8.0。运行Spring4.0必须使用Java6.0以上版本,推荐使用Java8.0及以上版本,如果要编译Spring4.0,则必须使用Java8.0。

全面支持Java8.0

Spring框架本身是由Java8.0编译器编译的,编译时使用的是生成Java 6字节码的编译命令选项,因此可以使用Java6.0,7.0或8.0来运行Spring 4.0的应用。

Java8.0编译器编译过的代码需要在Java8.0或以上的Java虚拟机上运行,由于在Spring框架中大量应用了反射机制和Asm,Cglib等函数库,必须确保这些函数库能理解Java8.0生成的新.class文件。因此,Spring将Asm,Cglib等函数库通过jarjar嵌入Spring框架中,这样就可以同时支持Java6.0,7.0和8.0的字节码而不会产生运行时错误。

Java8.0的Lambda表达式和LocalDate,LocalTime,LocalDateTime,重复注解等新特性都被在Spring4.0中提供相应支持,Java8的java.util.Optional类可以在Spring注入时使用,以表示不一定会被注入的元素,在Spring MVC框架中使用Optional来修饰参数,表示请求中该项参数是可选的。

核心容器的增强

Spring4.0对核心容器进行了增强,支持泛型依赖注入,对CgLib代理不再要求必须有空参构造器。在基于Java的配置里添加了@Description;提供@Conditional注解来实现Bean的条件过滤;提供@Lazy注解解决Bean延时依赖注入;支持Bean被注入List或者Array时可以通过@Order注解或基于Ordered接口进行排序。如果使用Spring的注解支持,则可以使用自定义注解来组合多个注解,方便对外公开特定的属性。

支持Groovy定义Bean,基于Servlet3.0开发,支持WebSocket,测试的增强,提供了对JCache注解的支持,添加了对动态语言支持,添加了多线程并发处理支持,对JDK的Future进行了封装,简化了现场回调处理;增强了持久化处理,全面支持Hibernate ORM5.0,不再支持Hibernate3.6以前版本,并去除了对iBatis的直接支持。

Spring子项目:

精通Spring4.x 第一章 Spring概述_第2张图片

精通Spring4.x 第一章 Spring概述_第3张图片 获取Spring

社区下载:http://spring.io/projects

Maven下载:



    4.0.0
    com.smart
    chapter2
    1.0
    Spring4.x第二章实例
    Spring4.x第二章实例
    war
    
        
        
            org.springframework
            spring-beans
            ${spring.version}
        
        
            org.springframework
            spring-context
            ${spring.version}
        
        
            org.springframework
            spring-context-support
            ${spring.version}
        
        
            org.springframework
            spring-jdbc
            ${spring.version}
        
        
            org.springframework
            spring-webmvc
            ${spring.version}
        

        
            commons-dbcp
            commons-dbcp
            ${commons-dbcp.version}
        
        
            mysql
            mysql-connector-java
            ${mysql.version}
        
        
            javax.servlet
            servlet-api
            ${servlet.version}
            provided
        
        
            org.aspectj
            aspectjweaver
            ${aspectj.version}
        


        
            org.testng
            testng
            ${testng.version}
            test
        
        
            org.springframework
            spring-test
            ${spring.version}
            test
        
    

    
        
            
            
                org.mortbay.jetty
                maven-jetty-plugin
                6.1.25
                
                    
                        
                            8000
                            60000
                        
                    
                    /bbs
                    0
                
            

            
                org.apache.maven.plugins
                maven-surefire-plugin
                2.17
                
                    methods
                    10
                
            
        
    

    
        UTF-8
        4.2.2.RELEASE
        8.0.12
        3.0-alpha-1
        1.8.1
        1.9
        1.4
        5.0.2.Final
        8.1.8.v20121106
        1.7.5
        6.8.7
    

获取文档支持:

https://spring.io/docs/reference提供所有Spring项目的在线文档

也可以下载pdf文档方便离线阅读:

精通Spring4.x 第一章 Spring概述_第4张图片

截取至红色方框部分访问就可以看到各种提供的文档了,如果没有离线文档可以查看其他版本的spring文档目录,实在没有记住这个网址就是了,个人觉得浏览器阅读反而美观方便一点 

你可能感兴趣的:(读书笔记,Java框架)