初步了解Spring

Spring是一个轻量级框架,用于组织中间层对象,如Hibernate和struts,实现中间件之间的高度解耦,是真正的面向接口编程,spring拥有20多个模块,包括核心容器,数据访问集成,Wb(serlvet,web),AOP模块等,相当于一个完整平台!如果把Tocamcat比做插座,那么spring就是才能够其中一个插位延伸出来的排插!

1----核心容器(Core Context):以Beans和Core为基础实现了BeanFactory类,提供了IOC和依赖注入,而Context就在Bean和Core的基础上集成,添加了国际化,资源加载,校验(监听)等功能

2----数据集成访问模块(JDBC , ORM , Transaction):此部分提供的是一套连接数据库的程序化的代码,减少了开发过程中连接失败,或者释放失败引起的一系列问题!Transction为事务模块,提供了对特定事务的支持,但是必须要求使用者实现特定的 接口!

3----Web模块:提供了Servlet支持,web支持,和Struats支持。Web提供了面向web的集成功能,如文件上传,使用监听器初始化IOC容器和Web上下文!而Servlet则是提供了模型-视图-控制器的实现

4----AOP模块:面向切面编程的实现,提供了拦截器和类似日志的切点,降低了耦合性并可以将某些横向行为插入到业务中!

5---Test模块:提供了Junit的测试功能,提供了一致的applicationContext并缓存上下文!

============================================================================

 

原版本Spring结构如下:

1---applicationContext.xml文件:用于配置基本的参数信息,加载Beans对象文件(最初的Spring每个对象都会有一个hbm.xml文件),拦截器,dataSource数据源,sessionFactor工厂,Hibernate框架,事务管理等!

2---User.hbm.xml文件:维护了这个对象里面属性的特点还有方法类型!

将java代码中对象间的依赖关系的控制权交给了Spring配置文件,由Spring来生成对象,并且设置对象间的依赖关系,这就是控制反转(IOC)或者叫依赖注入(DI),控制反转是指原本是由哪个Servlet对象调用哪个对象,那么就由该Servlet对象去负责创建被调用者的实例。现在创建对象的权利被Sprng的IOC容器接受了,所以称控制对象呗反转了!而依赖注入是指原本引用一个对象需要插件实例后通过实例调用,现在由于对象的创建都交给了Spring的IOC容器,我们可以直接在Servlet代码中通过配置或者注解依赖的方式注入!

在结合SpringMvc后的结构分析:

spring相当是一个外接延伸的排插,根据web项目的特点,我们同样需要在web.xml中维护其信息

 

<!--通过加载 applicationContext.xml 对web和spring容器进行整合加载-->
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
    classpath*:/applicationContext.xml,
    classpath*:/applicationContext-datasource.xml
  </param-value>
</context-param>

//提高整合的融合度

 

<!-- RequestContextListener实现ServletRequestListener监听器接口接,Web服务器接收的每次请求都会通知该监听器,将Spring容器与Web容器结合的更加密切 -->
<!--对web和spring容器进行监听的容器:继承底层的事件监听机制-->
<listener>
  <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

到这一步,关于spring的信息就基本加载到web项目中,那么还需要两个文件用于配置spring框架所带来的简约化处理!

配置文件:

在resources包的 applicationContext.xml下配置Spring的全局扫描,以及AOP切面,以及外属性文件连接,定时调度等

 

<context:component-scan base-package="com.mmall" annotation-config="true">
    <!--排除对controller注入的扫描,交给sringmvc的dispatcherServlet-->
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--<context:annotation-config/>-->
<!--AOP切面-->
<aop:aspectj-autoproxy/>

<context:property-placeholder location="classpath:datasource.properties"/><!--追加主动加载外带属性文件&ndash;&gt;&ndash;&gt;-->
<!--定时调度-->
<task:annotation-driven/>
 
<!--容器文件太大切分成几部分-->
<import resource="applicationContext-datasource.xml"/>

其中datasource.properties是用于加载数据库连接的配置信息,而applicationContext-datasource.xml则是用于读取datasource的配置文件,里面除了维护以xml读取到的数据库连接信息外, 还建立了sessionFactory()用于连接数据库!以及数据库分页!在连接成功后,同时也配置mapperScannerConfigurer用于扫描-加载mappers里维护的xml文件里面的SQL!以及事务控制

 

以上为用于整合其他模式时候的spring,这个时候的spirng也是最简洁明了,因为原本属于sring的实现大部分都会被迁移,这也是目前大多数公司的用法

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值