Spring Framework(Spring框架)
Spring 是一个开源的企业级Java应用程序框架,由Rod Johnson在2002年创立。它的核心特性包括:
- 依赖注入 (Dependency Injection, DI):通过容器管理对象间的依赖关系,降低代码耦合度,提高可测试性和重用性。
- 面向切面编程 (Aspect-Oriented Programming, AOP):允许开发者定义横切关注点,如事务管理、日志记录、权限检查等,无需侵入业务逻辑代码。
- 模块化设计:包含众多模块,如Spring Core(基础模块)、Spring Context(提供IoC容器)、Spring AOP、Spring JDBC、Spring MVC(用于构建Web应用)、Spring Data(简化数据访问)、Spring Security(安全框架)等。
Spring Boot
Spring Boot 是Spring家族的一员,旨在简化新Spring应用的初始搭建以及开发过程,首版发布于2014年。其核心理念是“约定优于配置”,显著特点包括:
- 自动配置 (Auto-configuration):根据应用中存在哪些类或者bean,Spring Boot会自动配置相关依赖,减少手动配置的工作量。
- 起步依赖 (Starter Dependencies):提供了一系列预定义的依赖集合,只需声明少量的“starter”就能包含所有需要的库,避免版本冲突问题。
- 嵌入式服务:内嵌了如Tomcat、Jetty等Web服务器,使得Spring Boot应用可以被打包成一个独立可执行的jar文件,直接运行,无需外部部署容器。
- 简化开发流程:提供了统一的健康检查、监控、日志配置等功能,使开发者能快速开始业务逻辑开发,而不必关心底层设施的搭建。
相同点:
- 基于Spring框架:Spring Boot建立在Spring的基础之上,继承了Spring的所有优点和功能模块。
- 组件模型:两者都采用基于注解的编程模式,如
@Component
、@Service
、@Repository
、@Controller
等,以及依赖注入的概念。
不同点:
-
配置方式:
- Spring 原生需要大量XML配置或Java配置类来定义Bean及依赖关系。
- Spring Boot强调无XML配置,大量使用默认配置,必要时可通过
@ConfigurationProperties
、application.properties
或application.yml
等方式进行细粒度定制。
-
启动方式:
- Spring 应用一般需要配合Servlet容器(如Tomcat)部署。
- Spring Boot应用可以直接通过
main
方法启动,内嵌的Servlet容器使其成为独立可执行的程序。
-
开发效率:
- 使用Spring进行开发时,可能需要较多时间去处理各种配置、集成第三方库等问题。
- Spring Boot通过自动化配置和 starters极大地提高了开发效率,降低了项目的初始化成本。
举例说明:
- 在传统的Spring MVC项目中,开发者需要手动配置DispatcherServlet、HandlerMapping、ViewResolver等一系列组件,并且可能需要单独配置数据库连接、日志框架等。
- 而在Spring Boot项目中,开发者只需要在
pom.xml
中加入spring-boot-starter-web
依赖,Spring Boot会自动配置好Web环境所需的全部组件;同样,添加spring-boot-starter-data-jpa
依赖,就可以自动配置JPA和连接池,开发者只需通过简单的注解即可操作数据库。
Spring Boot对于小型到中型项目尤为友好,简化了开发和部署流程,但并不排斥Spring框架本身的强大功能和灵活性,大型项目也可以结合使用,利用Spring Boot的便利性快速搭建基础设施,并结合Spring的强大模块进行深度定制和扩展。