一、首先了解什么是Spring?
Spring是一个开源的框架,Spring为简化企业级应用开发而生,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能。Spring是一个IOC和AOP容器框架。在java开发领域,Spring相对于EJB来说是一种轻量级的,非侵入性的Java开发框架。
Spring主要核心是:
(1).控制反转(IOC):以前传统的java开发模式中,当需要一个对象时,我们会自己使用new或者getInstance等直接或者间接调用构造方法创建一个对象,而在Spring开发模式中,Spring容器使用了工厂模式为我们创建了所需要的对象,我们使用时不需要自己去创建,直接调用Spring为我们提供的对象即可,这就是控制反转的思想。实例化一个java对象有三种方式:使用类构造器,使用静态工厂方法,使用实例工厂方法,当使用spring时我们就不需要关心通过何种方式实例化一个对象,spring通过控制反转机制自动为我们实例化一个对象。
(2).依赖注入(DI):Spring使用java Bean对象的Set方法或者带参数的构造方法为我们在创建所需对象时将其属性自动设置所需要的值的过程就是依赖注入的基本思想。
(3).面向切面编程(AOP):在面向对象编程(OOP)思想中,我们将事物纵向抽象成一个个的对象。而在面向切面编程中,我们将一个个对象某些类似的方面横向抽象成一个切面,对这个切面进行一些如权限验证,事物管理,记录日志等公用操作处理的过程就是面向切面编程的思想。
二、Spring开发令程序员非常头疼的三点:
1. 依赖太多了,而且要注意版本兼容。这个应用,要添加10-20个依赖,Spring相关的包10多个,然后是Hibernate包,Spring与Hibernate整合包,日志包,json包一堆,而且要注意版本兼容性。
2. 配置太多了,要配置注解驱动,要配置数据库连接池,要配置Hibernate,要配置事务管理器,要配置Spring MVC的资源映射,要在web.xml中配置启动Spring和Spring MVC等
3.部署和运行麻烦。要部署到tomcat里面,不能直接用java命令运行。
三、Spring Boot的优势
Spring Boot 是Spring的一套快速配置脚手架(简化Spring开发的框架),用来监护spring应用开发,约定大于配置,去繁就简,使得Spring的学习和使用变得快速无痛。不仅适合替换原有的工程结构,更适合微服务开发。
我们在使用Spring Boot时只需要配置相应的Spring Boot就可以用所有的Spring组件,简单的说,spring boot就是整合了很多优秀的框架,不用我们自己手动的去写一堆xml配置然后进行配置。从本质上来说,Spring Boot就是Spring,它做了那些没有它你也会去做的Spring Bean配置。
- Spring boot是Spring的引导,就是用于启动Spring的。
- Spring boot专注于快速、方便集成的单个个体。
- spring boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置; Spring Boot的哲学就是约定大于配置; 既然很多东西都是一样的,为什么还要去配置。
Spring Boot 优点如下:
- 快速创建独立运行的Spring项目以及与主流框架集成
- 快速嵌入式的Servlet容器,应用无需打包成WAR包
- starters自动依赖与版本控制,解决依赖问题
- 大量的自动配置,简化开发,解决配置复杂问题(也可修改默认值)
- 无需配置XML,无代码生成,开箱即用
- 准生产环境的运行时应用监控
- 与云计算的天然集成
- . 通过内嵌web容器,由应用启动tomcat,而不是tomcat启动应用,来解决部署运行问题
Spring Boot核心功能:
独立运行的Spring项目: Spring Boot可以以jar包的形式独立运行,运行一个Spring Boot项目只需通过java -jar xx.jar来运行
内嵌的Servlet容器: Spring Boot可选择内嵌Tomcat、Jetty,无需以war包形式部署项目
提供starter简化Maven配置: 如使用spring-boot-starter-web时,会自动加入tomcat,webMvc,jackson,hibernate-validate的jar
自动配置Spring: Spring Boot 会根据在类路径中的jar包,为jar包里的类自动配置Bean
准生产级别的应用监控: Spring Boot提供了基于http,ssh,telnet对运行时的项目进行监控
四、Spring Boot开发热部署(无需重启应用)
Spring Boot提供了一个名为spring-boot-devtools的模块来使应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。虽然平时开发web项目过程中,改动项目重启总是报错,但springBoot对调试支持很好,修改之后可以实时生效,基于Maven的SpringBoot项目实现热部署只需要在pom.xml中添加以下的配置:
<dependencies>
<!-- Spring Boot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 热更新 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
复制代码
五、来说说单体应用与微服务
单体应用是把所有的应用模块都写在一个应用中,导致项目越写越大,模块之间的耦合度也会越来越高。微服务是一种架构风格,用微服务可以将应用的模块单独部署,对不同的模块进行不同的管理操作,不同的模块生成小型服务,每个功能元素最后都可以成为一个可以独立替换、独立升级的功能单元,各个小型服务之间通过http进行通信。