Spring的学习 第一天

前言:

关于spring这个框架我还真的不知道怎么总结走,因为有的必须通过代码来实现,当你看到运行的结果时候你才会明白其中的意思,如果用代码来演示,我感觉配置文件会有很多,我自己说不定就会懵逼,一个bean就要各种不同的配置。但我还是努力总结下去的,不因什么而是告诉自己需要什么。

Spring 是什么?

Spring是分层的、JavaSE/EE一站式(full-stack)、轻量级开源框架。.

Spring 为简化企业级应用开发而生

使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能.

Spring 是一个 IOC(DI)和AOP容器框架.

JavaEE分层:

JavaEE规范的三层结构体系:

表现层(页面数据显示、页面跳转调度),例如jsp/servlet

业务层(业务处理和功能逻辑、事务控制),例如service

持久层(数据存取和封装、和数据库打交道),例如dao

Spring提供了JavaEE各层的解决方案:

表现层:struts1、struts2、Spring MVC

业务层:Ioc、AOP、事务控制

持久层:JdbcTemplate、HibernateTemplate、ORM框架(对象关系映射)整合

具体描述 Spring:

轻量级:Spring 是非侵入性的-基于Spring开发的应用中的对象可以不依赖于Spring的API,取代了EJB的臃肿、低效、繁琐复杂、脱离现实的情况. 而且使用spring编程是非侵入式的

依赖注入(DI--- dependency injection、IOC)

面向切面编程(AOP--- aspect oriented programming)

容器:Spring 是一个容器, 因为它包含并且管理应用对象的生命周期

框架:Spring 实现了使用简单的组件配置组合成一个复杂的应用.在Spring中可以使用XML和Java注解组合这些对象

–一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上Spring自身也提供了展现层的SpringMVC和持久层的 Spring JDBC)

Spring模块

核心容器(CoreContainer)包括Core、Beans、Context、EL模块。

1:Core和Beans模块提供了Spring最基础的功能,提供IoC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。

2:Context模块基于Core和Beans来构建,它提供了用一种框架风格的方式来访问对象,有些像JNDI注册表。Context封装包继承了beans包的功能,还增加了国际化(I18N),事件传播,资源装载,以及透明创建上下文,例如通过servlet容器,以及对大量JavaEE特性的支持,如EJB、JMX。核心接口是ApplicationContext。

3:Expression Language,表达式语言模块,提供了在运行期间查询和操作对象图的强大能力。支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从Spring 容器获取Bean,它也支持列表投影、选择和一般的列表聚合等。

数据访问/集成部分(DataAccess/Integration)

1:JDBC模块,提供对JDBC的抽象,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。

2:ORM模块,提供了常用的"对象/关系"映射APIs的集成层。其中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封装包,可以混合使用所有Spring提供的特性进行"对象/关系"映射,如简单声明事务管理。

3:OXM模块,提供一个支持Object和XML进行映射的抽象层,其中包括JAXB、Castor、XMLBeans、JiBX和XStream。

4:JMS模块,提供一套"消息生产者、消费者"模板用于更加简单的使用JMS,JMS用于用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

5:Transaction模块,支持程序通过简单声明性事务管理,只要是Spring管理对象都能得到Spring管理事务的好处,即使是POJO,也可以为他们提供事务。

Web

1:Web模块,提供了基础的web功能。例如多文件上传、集成IoC容器、远程过程访问、以及Web Service支持,并提供一个RestTemplate类来提供方便的Restful services访问

2:Web-Servlet模块,提供了Web应用的Model-View-Controller(MVC)实现。Spring MVC框架提供了基于注解的请求资源注入、更简单的数据绑定、数据验证等及一套非常易用的JSP标签,完全无缝与Spring其他技术协作。

3:Web-Struts模块,提供了对Struts集成的支持,这个功能在Spring3.0里面已经不推荐了,建议你迁移应用到使用Struts2.0或Spring的MVC。

4:Web-Portlet模块,提供了在Portlet环境下的MVC实现

AOP

1:AOP模块,提供了符合AOP 联盟规范的面向方面的编程实现,让你可以定义如方法拦截器和切入点,从逻辑上讲,可以减弱代码的功能耦合,清晰的被分离开。而且,利用源码级的元数据功能,还可以将各种行为信息合并到你的代码中。

2:Aspects模块,提供了对AspectJ的集成。

3:Instrumentation模块,提供一些类级的工具支持和ClassLoader级的实现,可以在一些特定的应用服务器中使用。

Test

1:Test模块,提供对使用JUnit和TestNG来测试Spring组件的支持,它提供一致的ApplicationContexts并缓存这些上下文,它还能提供一些mock对象,使得你可以独立的测试代码。

Spring的核心

IoC(Inverse of Control控制反转):将对象创建权利交给Spring工厂进行管理。比如说Book book = new Book();

现在: Book book = Spring工厂.getBook();

AOP(Aspect OrientedProgramming面向切面编程),基于动态代理的功能增强方式。

Spring的优点

(1)方便解耦,简化开发

Spring就是一个大工厂,它可以将所有对象创建和依赖关系维护,交给Spring管理

(2)AOP编程的支持

Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能

(3)声明式事务的支持

只需要通过配置就可以完成对事务的管理,而无需手动编程

(3)方便程序的测试

Spring对Junit4支持,可以通过注解方便的测试Spring程序

(5)方便集成各种优秀框架

Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持

(6)降低JavaEE API的使用难度

Spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

搭建 Spring开发环境

置于如何去下载包和怎么创建spring的项目啊,这样的我就不具体描述,不会就问百度,要下载什么直接去官网找。

Spring项目暂时需要的核心包

Spring下的目录解释

Spring的第一个Dome,Helloworld.

在src下建立applicationContext.xml

这就是一个简单的Spring的一个小的Dome,关于具体的配置和注入方式后面继续讲解,今天主要就是介绍Spring是什么。

SPRING TOOL SUITE 是一个Eclipse插件,利用该插件可以更方便的在Eclipse平台上开发基于Spring的应用。

插件下载的网址:https://spring.io/tools/sts/all/

安装方法说明(springsource-tool-suite-3.4.0.RELEASE-e4.3.1-updatesite.zip):

–Help-->Install New Software...

–ClickAdd...–In dialog Add Site dialog, click Archive...

–Navigate to springsource-tool-suite-3.4.0.RELEASE-e4.3.1

-updatesite.zip andclick Open –Clicking OKin the Add Site dialog will bring you back to the dialog 'Install'

–Select the xxx/SpringIDEthat hasappeared

–Click Next and then Finish–Approve the license –Restart eclipse when that is asked

插件不会安装的可以查看我的eclipse主题插件的安装,操作其实查不多的,在勾选的时候只要勾选IDE的这四个就行了。

还有的就是在写配置文件的时候没有提示的原因:需要配资约束文件,如果有网就不需要配置也行。

约束文件配置如下。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180515G097ME00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券