江湖地位
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
基本情况概述
介绍
- Spring框架提供了一套适用于任何场景的编程和配置模型来开发企业级Java应用程序
- Spring的一个关键元素是在应用程序级别上提供基础设施支持:Spring专注于为企业级应用铺设“管道”(基础设施),研发团队因此可以集中在应用级别的业务逻辑上,无须与特定的部署环境绑定。
特性
- 核心技术: 依赖注入、事件、资源处理、国际化、验证、数据绑定、类型转换、SpEL、AOP(面向切面编程)
- 测试: mock对象、测试上下文框架、SpringMVC测试支持、Web测试客户端
- 数据访问: 事务支持、DAO支持、JDBC、ORM、XML解析
- Spring MVC and Spring WebFlux 网络框架
- 集成: 远程访问、java消息服务至此、JCA、JMX、Email、任务处理、定时处理、缓存
- 语言:Kotlin、Groovy、其他动态语言
概述
- 企业级Java开发最流行的框架,通过集成提供一站式解决方案
- 模块化 功能划分为模块,允许只使用某个模块
- 轻量级 基本款才2M
- 无侵入 不需要使用方代码加入额外的代码即可,完全隔离
功能
- Spring 容器提供了IOC机制,可以创建对象以及管理对象之间的调用关系,避免了硬编码造成的程序耦合
- 提供了AOP(面向切面编程方式)功能,可以实现很多特定功能
- 声明式事务控制处理
- 对JDBC进行了轻量级的封装,可以更加灵活的去操作数据库
- 提供了MVC设计模式的解决方案
- 提供了文件上传、定时器等常用工具类
- 对于其他优秀框架的支持(如:Struts、Hibernate、MyBatis、Quartz等)
体系
- web
- WebSocket
- Servlet
- Web
- Portlet
- Data Access/Integration
- JDBC
- ORM
- OXM
- JMS
- Transactions
- AOP
- Aspects
- Instrumentation
- Messaging
- Core Container
- Beans
- Core
- Context
- SpEL
IoC:控制反转
-
概念:IoC=Inverse of Control,在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。
-
DI:依赖注入:n是实现IOC的一种方式
- 所谓依赖注入,即在运行期由容器将依赖关系注入到组件之中。
-
是在运行期,由Spring根据配置文件,将其他对象的引用通过组件的提供的setter方法或者构造器进行设定。
-
Spring容器的作用:
- 实例化对象
- 分析对象的依赖并注入
-
IoC的好处
- 无侵入,不需要实现框架指定的接口,因此可以轻松的将组件从Spring中脱离,甚至不需要任何修改
- 组件间的依赖关系减少,极大改善了代码的可重用性。
- 便于组件的维护和管理
- Spring的依赖注入机制,可以在运行期为组件配置所需资源,而无需在编写组件代码时就加以指定,从而在相当程度上降低了组件之间的耦合。{解耦合}
-
实现步骤
- 初始化阶段:创建容器,根据配置文件,实例化bean并且做依赖注入
- 运行时阶段:获取容器中的bean
-
注解式使用
常用注解:- 标记本类为spring的bean,等价于 xml中
- @Controller 控制器
- @Service 服务
- @Repository 仓库服务DAO
- @Component 其他组件
- @Autowired 向容器请求注入一个bean 等价于 property的ref和value
- @Value 注入值
- 标记本类为spring的bean,等价于 xml中
-
基于java的配置方式使用
- @Configuration 表明该类为配置类,等价于applicationContext.xml
- @Bean 表示该方法创建一个springbean,等价于 ,方法名就是bean的名字,返回值就是bean的实例
AOP(Aspect-Oriented Programming ):面向切面编程
- 经典应用场景:spring声明式事务管理
- 跨模块的代码共享:作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务。