Spring入门

Spring

Spring简介

Spring是由Rod Johnson创建的一款开源框架,它面向抽象编程,旨在简化企业级Java应用程序的开发。Spring的核心优势之一在于其分层架构设计,该架构允许用户按需选择组件,并为J2EE应用程序提供了一个集成的框架解决方案。

Spring通过使用基础的JavaBean替代EJB完成许多功能,而不仅仅局限于服务器端开发。无论从简单性、可测试性还是松耦合角度考虑,任何Java应用都可以从Spring中获益。Spring的核心包括控制反转(IoC)和面向切面编程(AOP)原则。简而言之,Spring是一个全面支持JavaSE/EE的一站式轻量级开源框架。

框架特性

  • 轻量级
  • 控制反转(IoC)
  • 面向切面(AOP)
  • 容器管理
  • MVC模式支持

特点

  • 方便解耦,简化开发:Spring通过依赖注入促进组件之间的解耦。
  • AOP编程支持:内置对面向切面编程的支持,实现如权限拦截、运行监控等功能。
  • 声明式事务支持:只需在配置文件中声明即可处理事务,无需业务逻辑代码侵入事务管理。
  • 便捷的程序测试:与JUnit4良好整合,可通过注解进行简便的Spring程序测试。
  • 易于集成其他优秀框架:Spring能无缝集成Struts、Hibernate、MyBatis、Quartz等第三方框架。
  • 降低Java EE API使用难度:Spring对复杂API(如JDBC、JavaMail、远程调用等)进行了封装和简化。

声明式事务示例

<!-- 配置声明式的事务策略 -->
<tx:advice id="tx" transaction-manager="transactionManager">
    <tx:attributes>
        <!-- 以save开头的方法采用默认传播属性,读写事务 -->
        <tx:method name="save*" propagation="REQUIRED" isolation="DEFAULT" read-only="false"/>
        <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT" read-only="false"/>
    </tx:attributes>
</tx:advice>

<aop:config>
    <aop:pointcut expression="execution(* com.wstv.spring.jdbc.transaction.service.*.*(..))" id="perform"/>
    <aop:advisor advice-ref="tx" pointcut-ref="perform"/>
</aop:config>

优点

  • 高度内聚低耦合:Spring通过容器管理对象创建和依赖关系,简化了开发过程。
  • 一站式服务:Spring作为一个大工厂或容器,集中管理所有对象的生成和依赖。
  • AOP编程支持:提供了面向切面编程能力,便于实现权限拦截、运行监控等功能。
  • 声明式事务管理:通过配置即可轻松管理事务,避免手工编码事务处理逻辑。
  • 便捷的测试环境:与JUnit4紧密集成,使得Spring程序测试更加便利。
  • 广泛兼容性:Spring不排斥其他优秀框架,内置了对多种框架的直接支持。
  • 简化Java EE API使用:降低了诸如JDBC、JavaMail等Java EE API的使用难度。

容器结构

类实例化方式(装配)

1. 默认构造器实例化

  • Spring通过类的默认构造器来实例化Bean。

2. 静态工厂方法实例化

  • 静态工厂方法常用于与其他框架的整合。
  • 在XML配置中指定静态工厂类及静态方法:
<bean id="" class="工厂全限定类名" factory-method="静态方法名"></bean>

例如:

public class MyBeanFactory {

    public static UserService createService() {
        return new UserServiceImpl();
    }
}

对应的Spring配置:

<bean id="userServiceId" class="com.wstv.c_inject.b_static_factory.MyBeanFactory" factory-method="createService"></bean>

3. 实例工厂方法实例化

  • 需先实例化工厂类,然后通过非静态方法创建目标对象。

实例工厂类示例:

public class MyBeanFactory {

    public UserService createService() {
        return new UserServiceImpl();
    }
}

对应的Spring配置:

  1. 创建工厂实例:
<bean id="myBeanFactoryId" class="com.wstv.c_inject.c_factory.MyBeanFactory"></bean>
  1. 使用工厂实例创建目标对象:
<bean id="userServiceId" factory-bean="myBeanFactoryId" factory-method="createService"></bean>

原文链接 https://www.hanyuanhun.cn | https://node.hanyuanhun.cn

posted @   汉源魂  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示