首页 > 代码库 > 初识Spring

初识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框架构成:
  1. 核心容器:BeanFactory工厂模式
  2. Spring上下文:配置文件,向Spring框架提供上下文信息
  3. SpringAOP:不用依赖EJB组件,就可以将声明式事务管理集成到应用程序
  4. SpringDAO:JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息
  5. SpringORM:提供ORM的对象关系工具
  6. SpringWeb模块:为基于Web的应用程序提供了上下文
  7. SpringMVC框架:MVC框架是一个全功能的构建Web应用程序的MVC实现
    IOC(Inversion of Control)反转控制,这是Spring核心,贯穿始终
    所有的类都会在Spring容器中登记,Spring会在系统运行到适当的时候,把你要的东西主动给你,所有的类的创建、销毁都由Spring来控制,控制对象生存周期的不再是引用它的对象,而是Spring
    IOC的一个重点是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