spring 构建

spring官网 https://spring.io
spring 为解决Java编程开发中的一些基础性的,重复的问题而产生.
spring轻量级,面向bean,松耦合

Spring的初心:简化开发,她始终如一地坚持这一理念,
1、 基于POJO的轻量级和最小侵入性编程
2、 通过依赖注入和面向接口松耦合;
3、 基于面向切面和惯性的声明式编程
4、 通过切面和模板代码减少样板代码

整体架构:
Spring框架是一个分层架构,它包含一系列的功能要素,并被分为大约20个模块,如下所示


image

这些模块总结为:
1>Core Container
Core Container (核心容器)包含Core,Beans,Context和Expression Language模块.
Core和Beans模块是框架的基本部分,提供IOC和依赖注入特性.这里的基础概念的BeanFactory, 它提供对Factory模式经典实现,来消除程序性的单例模式需求,分离出依赖关系和配置
1)Core模块主要包含Spring框架的基本核心工具类,Spring的其他组件都要使用到这个包里的类,Core模块是其他组件的基本核心.
2)Beans模块是所有应用都要用到的,它包含访问配置文件,创建和管理bean以及进行IOC/DI操作相关的所有类.
3)Context模块构建于Core和Beans模块基础之上,提供一种类似于JNDI注册器的框架式对象访问方法.Context模块继承了Beans的特性,为Spring核心提供了大量扩展,添加了对国际化(如资源绑定),事件传播,资源加载和对Context的透明创建的支持.ApplicationContext接口是Context模块的关键.
4)Expression Language模块提供了一个强大的表达式语言用于在运行时查询和操纵对象.
2>Data Access/Integration
Data Access/Integration 层包含JDBC,ORM,OXM,JMS和Transaction模块.
1)JDBC模块提供一个JDBC抽象层,它可以消除冗长的JDBC编码和解析数据库厂商特有的代码.这个模块包含了Spring对JDBC数据库访问进行封装的所有类

  1. ORM模块为流行的对象-关系映射API,如JPA,JDO,Hibernate,iBatis等,提供了一个交互层,利用ORM封装包,可以混合使用所有Spring提供的特性进行O/R映射.
    3)OXM模块提供了一个对Object/XML映射实现的抽象层,Object/XML映射实现包括JAXB,Caster,XMLBeans,JiBX和XStream.
    4)JMS(Java Messaging Service)模块主要包含了一些制造和消费消息的特性.
    5)Transaction模块支持编程和声明性的事物管理,这些事物类必须实现特定的接口,并且对所有的POJO(普通的Java对象)都使用.
    3>WEB
    WEB上下文模块建立在应用程序上下文模块之上,为基于WEB的应用程序提供了上下文.WEB模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作.WEB层包含了Web,Web-Servlet,Web-Struts和Web-Portlet模块
    1)Web模块:提供了基础的面向Web的集成特性.例如,多文件上传,使用servlet listeners初始化IOC容器以及一个面向WEB的应用上下文.它还包含了spring远程支持中web的相关部分
    2)Web-Servlet模块web.servlet.jar:该模块包含了spring的model-view-controller(MVC)的实现.Spring的MVC框架使得模型范围内的代码和web froms之间能够清楚的分离开来,并与spring框架的其他特性集成在一起.
    3)Web-Struts模块:该模块提供了对Struts框架的支持
    4)Web-Portlet模块:提供了用于Portlet环境和Web-servlet模块的MVC实现.
    4>AOP
    AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现,它让你可以定义例如方法拦截器和切点,从而将逻辑代码分开,降低他们之间的耦合性.
    通过配置管理特性,spring AOP模块直接将面向切面的编程功能集成到了Spring框架中,所以spring框架管理的任何对象都可以支持AOP.Spring AOP模块为基于spring的应用程序中的对象提供了事务管理服务.
    1)Aspects模块提供了对AspectJ的集成支持.
    2)Instrumentation模块提供了class instrumentation支持和classLoader实现
    5>Test
    Test模块支持使用JUnit和TestNG对spring组件进行测试.

Spring对JDK版本要求
Spring Framework 5.1.x: JDK 8-12
Spring Framework 5.0.x: JDK 8-10
Spring Framework 4.3.x: JDK 6-8

Spring参考文档:
https://docs.spring.io/spring/docs/5.1.8.RELEASE/spring-framework-reference/
Spring API文档:
https://docs.spring.io/spring/docs/5.1.8.RELEASE/javadoc-api/

Spring框架的主要特性
Core technologies: dependency injection(依赖注入), events(事件), resources, i18n(国际化), validation, data binding(数据绑定), type conversion(类型转换), SpEL(表达式), AOP.

Testing: mock objects, TestContext framework, Spring MVC Test, WebTestClient.

Data Access: transactions(事物), DAO support, JDBC, ORM, Marshalling XML(XML解析).
Spring MVC and Spring WebFlux web frameworks.

Integration: remoting, JMS, JCA, JMX, email, tasks, scheduling, cache.

Languages: Kotlin, Groovy, dynamic languages.


1.spring源码构建
1)spring源码采用Gradle(较maven轻量级)工具构建

下载gradle
https://gradle.org
安装gradle
直接解压到一个目录即完成安装;
配置环境变量
配置GRADLE_HOME E:\1_install\gradle-5.4.1 和Path E:\1_install\gradle-5.4.1\bin
验证 gradle -v,环境变量是否正确

image.png


下载spring
https://github.com/spring-projects
https://github.com/spring-projects/spring-framework.git
下载源码后根据spring中import-into-idea.md文件说明操作,来导入idea

image.png

1.测试编译
image.png

  1. Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)


    image.png

error
1.Error:No such property: GradleVersion for class: JetGradlePlugin
降低gradle版本,此次由5.4.1 ->4.5.1
2.Could not find method useJUnitPlatform()

image.png

3.Error:Kotlin: [Internal Error] java.lang.AbstractMethodError
更新kotlin插件
参考文档https://blog.csdn.net/lianjiaokeji/article/details/82177236

  1. When prompted exclude the spring-aspects module (or after the import via File-> Project Structure -> Modules)
    image.png

4.code away

你可能感兴趣的:(spring 构建)