初识Spring
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识Spring相关的知识,希望对你有一定的参考价值。
Spring是一个开源框架,为简化企业级应用开发而生,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能,Spring是一个IOC(DI)和AOP容器框架。
轻量级(Spring是非侵入性的,基于Spring开发的应用中的对象可以不依赖与Spring中的API)
依赖注入(IOC)
面向切面编程(AOP)
容器(Spring是一个容器,它包含并且管理应用对象的生命周期)
框架(Spring实现了使用简单的组件配置合成一个复杂的应用,在Spring中可以使用XML和Java注解组合这些对象)
一站式(在IOC和AOP的基础上可以整合各种企业应用的开源框架可优秀的第三方类库)
IOC:反转资源获取的方向,容器主动地将资源推送给它所管理的组件,组件所要做的仅是选择一种合适的方式来接收资源
DI——IOC的另一种表述方式:即组件以一些预先定义好的方式(例如:setter)接收来自如容器的资源注入
Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。
Spring是企业应用开发的"一站式"选择,并贯穿表现层、业务层以及持久层。
Spring框架构成:
- 核心容器:BeanFactory工厂模式
- Spring上下文:配置文件,向Spring框架提供上下文信息
- SpringAOP:不用依赖EJB组件,就可以将声明式事务管理集成到应用程序
- SpringDAO:JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息
- SpringORM:提供ORM的对象关系工具
- SpringWeb模块:为基于Web的应用程序提供了上下文
- SpringMVC框架:MVC框架是一个全功能的构建Web应用程序的MVC实现
IOC(Inversion of Control)反转控制,这是Spring核心,贯穿始终所有的类都会在Spring容器中登记,Spring会在系统运行到适当的时候,把你要的东西主动给你,所有的类的创建、销毁都由Spring来控制,控制对象生存周期的不再是引用它的对象,而是SpringIOC的一个重点是DI(Dependency Injection)依赖注入,在系统运行中,动态的向某个对象提供它所需要的其他对象
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- 反转控制 --> <bean id="zhangsan" class="com.SpringIOC.demo.ZhangSan"></bean> <bean id="lisi" class="com.SpringIOC.demo.LiSi"></bean> <bean id="w" class="com.SpringIOC.demo.Work"> <!-- 依赖setter方法注入 --> <property name="test" ref="zhangsan"></property> </bean> <!-- 依赖注入 --> <bean id="girl" class="com.SpringIOC.zhuru.Girl"> <!--通过属性注入--> <property name="age" value="18"></property> <property name="name" value="翠花"></property> </bean> <bean id="Boy" class="com.SpringIOC.zhuru.Boy"> <property name="age" value="20"></property> <property name="name" value="翠山"></property> <property name="girl" ref="girl"></property> </bean> </beans>
DI所带来的最大收益——松耦合(解耦),如果一个对象只通过接口(而不是具体实现或初始过程)来表名依赖关系,就能够在对象本身毫不知情的情况下,用不同具体实现进行替换耦合具有两面性,一方面紧密耦合的代码很难测试、难以复用、并且地表现出“打地鼠”式的bug特性,修复一个bug将会出现一个或更多新的bug。另一方面,一定程度的耦合是必须的,完全没有耦合的代码什么也做不了,为了完成有实际意义的功能,不同的类必须以适当的方式进行交互。总而言之,耦合是必须,但应当小心谨慎地管理。Spring提供了对WebSocket编程的支持(新的消息模块)Spring致力于简化企业级Java开发,促进代码的松散耦合,成功的关键在于依赖注入和AOP
以上是关于初识Spring的主要内容,如果未能解决你的问题,请参考以下文章
初识OpenGL 片段着色器(Fragment Shader)