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配置:
- 创建工厂实例:
<bean id="myBeanFactoryId" class="com.wstv.c_inject.c_factory.MyBeanFactory"></bean>
- 使用工厂实例创建目标对象:
<bean id="userServiceId" factory-bean="myBeanFactoryId" factory-method="createService"></bean>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战