Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

时间:2022-12-20 20:33:20

框架学习前言

这个模块是面向Spring的,Spring的学习我是这么想的:

1、简单介绍Spring,主要是从网上借鉴一些重点

2、尽量说明清楚Spring的使用方法以及细节点

3、尽量以自己的理解讲清楚Spring中的一些源代码

Spring是什么

Spring是一款为了解决企业应用开发的复杂性而创建的轻量级Java框架。框架的主要优势之一就是其分层架构,分层架构允许使用者选择哪一个组件,同时为J2EE应用程序开发提供集成的框架。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益,Spring的核心是控制反转IOC面向切面AOP

Spring的特征

1、轻量

从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1M多的JAR文件里发布,并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型的,Spring应用中的对象不依赖于Spring的特定类。

2、控制反转

Spring通过一种称作控制反转IOC的技术促进了低耦合。当应用了IOC,一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。

3、面向切面

Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。应用程序只实现它们应该做的----完成业务逻辑,仅此而已,它们并不负责(甚至意识不到)其它的系统级关注点,例如日志或事物支持。

4、容器

Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建----基于一个可配置原型,你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例----以及它们是如何相互关联的。

5、框架

Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型的是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等),将应用逻辑的开发留给开发者。

所有Spring的这些特征使得开发者能够编写更干净、更可管理、更易于测试的代码,它们也为Spring中的各种模块提供了基础支持。

Spring的特点

1、方便解耦,简化开发

通过Spring提供的IOC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

2、AOP编程的支持

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

3、声明式事物的支持

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

4、方便集成各种优秀框架

Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架如Structs、Hibernate、Hessian、Quartz等的直接支持。

5、降低Java EE API的使用难度

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

6、Java源码是经典学习范例

Spring的源码设计精妙、结构清晰、独具匠心,处处体现着对Java设计模式灵活运用以及对Java技术的高深造诣。Spring框架源码无疑是Java技术的最佳实践范例,如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring的源码将使你获益匪浅。

Spring下载

Spring相关信息可以去Spring官网查看,不过都是全英文版本的。

Spring目前的最新版本是4.2.2,点击链接下载,解压后应该是这样的:

Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

介绍一下每个文件夹:

1、docs下是Spring相关资料,包括一个官方的英文版的资料《spring-framework-reference.pdf》以及网页版本的Spring API,上面有所有的Spring类与方法相关信息,就和JDK API一样

2、libs下包括了Spring所有jar包,注意一下"*.javadoc.jar"和"*.sources.jar"结尾的都是每个模块Spring提供的一些辅助文档而已,并不是真正要用的jar包的内容

3、schema里面是Spring每个组件、每个版本的.xsd文件,用来设置.xml文件自动提示用的

Spring环境搭建以及.xml文件自动提示设置

为了后面的学习,这里讲解一下如何搭建一个Spring框架以及如何为.xml文件设置Spring标签及相应属性的自动提示:

1、右键工程->Build Path->Configure Build Path...,选择Add External JARs...,导入所有libs下的jar包(如果只用bean工厂的功能其实不全部导入也行)

2、我们知道,Spring的使用是通过写配置文件的,所以右键src->new->File,随便命名,以xml结尾即可

3、xml文件里面写入,这是最基础的模板,往后所有功能都在这个模板上扩展:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd"> </beans>

4、点击Window->Preferences->MyEclipse->Files and Editors->XML->XML Catalog->Add->File System...,选择解压后的目录Schema文件夹,beans目录下的spring-beans-4.2.xsd,其实选任何一个版本的.xsd都可以,只要和你的Spring的.xml文件里面那个版本号对应就可以了

5、Key Type选择"Schema Location",key填"http://www.springframework.org/schema/beans/spring-beans-4.2.xsd",也就是.xml文件里面的那个路径

6、点击OK即可,之后配置Spring别的功能比如aop、context、jdbc什么的XML提示也可以用类似的方法,.xml里面配置一个地址,XML Catalog里面添加一个XML Catalog Entry

Spring日志系统搭建

Spring采用Apache common_logging,并结合Apache log4j作为日志输出组件,为了在调试过程中可以观察到Spring的日志输出,请先下载common_logging和log4j两个jar包,不知道最新的两个jar包是什么版本的,我用的是比较老的,以前就下载的:

Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

下载了之后请确保你的CLASSPATH下有这两个jar包。有了这两个jar包之后,右键src,新建一个"log4j.properties"文件,配置如下:

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%c{1} - %m%n

这样,在使用Spring的过程中,你就可以看到Spring的日志输出了。

Spring源码下载及导入MyEclipse

既然我们的要学习源代码,那势必要获取Spring的源码。Spring的源码是通过GitHub进行管理的,下载Spring源码并导入MyEclipse需要两样工具:

1、GitHub,点我

2、Gradle,点我,注意下载安装完Gradle要创建GRADLE_HOME系统变量,并将这个系统变量加入到path中,就和JDK一样,这个不会的可以上网查一下,安装完进入cmd,输入命令"gradle -version",打印出gradle的版本信息就表示gradle可以用了

GitHub和Gradle都安装完毕之后,分两步:

1、使用GitHub下载源码

首先下载安装这两个工具,OK之后,GitHub的bin目录下双击"tclsh85.exe",就跟使用cmd一样的,先随便找一个想要下载到的目录,使用"git clone git://github.com/SpringSource/Spring-framwwork.git"下载Spring源代码,如图:

Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

下载完毕应该是:

Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

2、当前下载的源码并不能直接导入MyEclipse中,我们还需要将源码转换为MyEclipse认识的形式,所以这时候就要用Gradle了。cmd进入命令窗口,切换至下载Spring源码所在的目录,我们想要把哪个模块的源码转成MyEclipse的就操作哪个文件夹,具体方式为:

Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

转换完毕应该是:

Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

此时我们看一下文件夹下的spring-beans目录:

Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

这就是MyEclipse认识的形式,直接Import进入MyEclipse,当然这个时候项目上有红色感叹号,表示工程有错,错误在:Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

用一样的方式把spring-core转一下导入源码工程就好了。另外,spring-cglib-repack-3.1.jar和spring-objenesis-repack-2.2.jar报错的问题,上网找一下这两个jar包下载并导入就好了,我是在CSDN上下载的。

Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse的更多相关文章

  1. spark最新源码下载并导入到开发环境下助推高质量代码&lpar;Scala IDEA for Eclipse和IntelliJ IDEA皆适用)(以spark2&period;2&period;0源码包为例)(图文详解)

    不多说,直接上干货! 前言   其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. ...

  2. hadoop源码eclipse环境搭建-源码获取阶段

    就目前了解,结合eclipse阅读和编译hadoop源码用两种方式:svn和git. 根据官方指南http://wiki.apache.org/hadoop/EclipseEnvironment 推荐 ...

  3. Netty环境搭建 &lpar;源码死磕2&rpar;

    [正文]netty源码  死磕2: 环境搭建 本小节目录 1. Netty为什么火得屌炸天? 1.1. Netty是什么? 1.2. Netty火到什么程度呢? 1.3. Netty为什么这么火? 2 ...

  4. qgroundcontrol开发环境搭建源码编译

    qgroundcontrol是一款无人机地面站开源软件,C++/QT开发 在https://github.com/mavlink/qgroundcontrol上就能找到,选择稳定版下载最新的是2.6 ...

  5. 【Java】用IDEA搭建源码阅读环境

    用IDEA搭建源码阅读环境 参考自CodeSheep的Mac源码环境搭建, https://www.bilibili.com/video/BV1V7411U78L 但是实际上在Windows搭建的差别 ...

  6. openwrt&lpar;一&rpar;:openwrt源码下载及编译环境搭建

    声明:从网上各位大神的博客学习,整理后记录,非原创. 注:请用非root用户来下载源码 导航: 1. openwrt编译环境搭建 2. openwrt源码下载 3. feeds更新 1. openwr ...

  7. Spring 5&period;2&period;x 源码环境搭建&lpar;Windows 系统环境下&rpar;

    前期准备 1.确保本机已经安装好了 Git 2.Jdk 版本至少为 1.8 3.安装好 IntelliJ IDEA (其他开发工具,如 eclipse.Spring Tool Suite 等也是可以的 ...

  8. spring源码下载及转入ECLIPSE

    转自:https://www.cnblogs.com/scevecn/p/6043284.html 本例spring源码版本是4.3.0的, 所以jdk需要准备1.8的(不同版本源码要求的jdk不一样 ...

  9. Spring源码下载

    Spring已经将源码从SVN迁移到了Github,而且也改为基于Gradle的构建来构建项目,它取代了之前的ANT+Ivy系统,所以要构建Spring源码要先安装Github和Gradle. 首先假 ...

随机推荐

  1. 【转】request&period;getServletPath&lpar;&rpar;和request&period;getPathInfo&lpar;&rpar;用法

    转自:https://my.oschina.net/sub/blog/182408 在 Web 中,我们通常需要获取 URL 相对于 Webapp 的路径,主要是下面的几个方法: request.ge ...

  2. (转)Deep Learning Research Review Week 1&colon; Generative Adversarial Nets

    Adit Deshpande CS Undergrad at UCLA ('19) Blog About Resume Deep Learning Research Review Week 1: Ge ...

  3. Android SDK的docs访问速度很慢(新)

    #设置环境变量 名称:ANDROID_SDK_HOME 值:我的为-->E:\android\android-sdk #代码编译及运行 1.把下面的代码保存为:AndroidDocRepair. ...

  4. ios开发——实用技术OC-Swift篇&amp&semi;本地通知与远程通知详解

    本地通知与远程通知详解 一:本地通知   Local Notification的作用 Local Notification(本地通知) :是根据本机状态做出的通知行为,因此,凡是仅需依赖本机状态即可判 ...

  5. 如何正确合理的建立MYSQL数据库索引

    索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...

  6. ms sql 根据表名查询 表中所有字段的属性值 sql语句

    SELECT表名=case when a.colorder=1 then d.name else '' end,--表说明=case when a.colorder=1 then isnull(f.v ...

  7. 零基础学Python--------第11章 使用Python操作数据库

    第11章 使用Python操作数据库 11.1 数据库编程接口 在项目开发中,数据库应用必不可少.虽然数据库的种类有很多,如SQLite.MySQL.Oracle等,但是它们的功能基本都是一样的,为了 ...

  8. &lbrack;Swift&rsqb;LeetCode378&period; 有序矩阵中第K小的元素 &vert; Kth Smallest Element in a Sorted Matrix

    Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth ...

  9. 聚类——GAKFCM的matlab程序

    聚类——GAKFCM的matlab程序 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 在聚类——GAKFCM文章中已介绍了GAKFCM算法的理论知识, ...

  10. 家庭记账本之GitHub账号注册与安装(一)

    账号注册 1.github是世纪上最大的开源代码托管网站.因为是国外网站,很多人在注册的时候因为不熟悉英语而犯了难. 2.百度搜索github进入官网.如果你已经有账号密码,那么点击右上角的sign ...