1spring
(1)基础建设
简单来讲,spring为java应用程序提供了全面基础支持
(2)可用框架
提供了一些依赖注入和开箱即用的模块,如下,这些模块减少了开发负担,提高了效率
(3)依赖添加
使用Spring创建一个web application,依赖如下
(4)testing libraries
Spring使用pring Test, JUnit, Hamcrest, and Mockito libraries都需要添加
(5)MVC Configuration
举栗子:jsp 的web应用
Spring需要定义dispatcher servlet, mappings和其他支持配置,一般是在web.xml文件或Initializer文件中配置
在配置文件中添加@EnableWebMvc注解
(6)配置Template Engine
需要thymeleaf-spring5依赖以及配置view resolver
(7)Spring Security配置
Spring需要spring-security-web和spring-security-config依赖
Spring还需要继承WebSecurityConfigurerAdapter类,添加@EnableWebSecurity注解
(8)Application Bootstrap
Spring和SpringBoot中应用程序引导的基本区别在于servlet。Spring使用Web.xml或SpringServletContainerInitiators作为它的引导入口点。
Spring支持Web.xml引导方式以及最新的Servlet 3+方法。
Web.xml分步骤处理:
1Servlet容器(服务器)读取Web.xml
2这个DispatcherServlet中定义的Web.xml由容器实例化。
3DispatcherServlet创造WebApplicationContext通过阅读Web-INF/{servletName}-servlet.xml
4最后,DispatcherServlet注册应用程序上下文中定义的bean。
以下是Spring引导程序如何使用Servlet 3+方法:
1容器搜索实现的类。ServletContainerInitiators并执行
2这个SpringServletContainerInitiators查找实现的所有类WebApplicationInitiator
3这个WebApplicationInitiator使用xml或@配置班
4这个WebApplicationInitiator创建DispatcherServlet使用先前创建的上下文。
(9)打包和部署
Spring和SpringBoot两个框架都支持像Maven和Gradle这样的通用包管理技术
Spring Boot Maven插件在Maven中提供SpringBoot支持。它还允许打包可执行的JAR或WAR实现
在部署上下文中,SpringBoot相对于Spring的一些优点包括:
1提供嵌入式容器支持
2使用命令独立运行JAR的规定爪哇-JAR
3选项以排除依赖项,以避免在外部容器中部署时可能发生的JAR冲突。
4选项可以在部署时指定活动配置文件。
5用于集成测试的随机端口生成
2SpringBoot
(1)基础升级
SpringBoot基本上是Spring框架的扩展,它消除了设置Spring应用程序所需的样板配置
(2)系统构建
SpringBoot构建了一个更快、更有效地开发生态系统
starter依赖简化了应用构建和配置
嵌入式服务器以避免应用程序部署的复杂性
度量指标、Helth检查和外部化配置
Spring功能的自动配置
(3)依赖
使用Springboot创建web application的依赖如下
(4)testing libraries
只需要一个starter 依赖,就把spring里面的testing libraries自动添加了
Spring提供了不同模块的常见starter如下
其他starter自定查看
地址:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter
(5)MVC Configuration
举栗子:jsp 的web应用
Springboot省去了上面spring的配置,我只要添加web starter 和如下配置即可
web starter自动配置了spring 很多配置,如下
地址:https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-auto-configuration
(6)配置Template Engine
SpringBoot只需要spring-boot-starter-thymeleaf ,就可以让web application支持Thymeleaf
Thymeleaf3.0,新特性需要添加thymeleaf-layout-dialect 依赖
添加依赖后需要添加templates 到src/main/resources/templates文件下就会自动加载
(7)Spring Security配置
SpringBoot只需要添加spring-boot-starter-security即可(这个依赖中包含spring-security-web和spring-security-config)
(8)Application Bootstrap
SpringBoot只使用Servlet 3特性来引导应用程序
SpringBoot应用程序的入口点是用@SpringBootApplication:
默认情况下,SpringBoot使用嵌入式容器运行应用程序。在本例中,SpringBoot使用public static void main启动嵌入式Web服务器的入口点。
此外,它还负责处理Servlet,过滤器,和ServletContextInitiator从应用程序上下文到嵌入式servlet容器的bean。
SpringBoot的另一个特性是它会自动扫描主类或主类的子包中的所有类以获取组件。
SpringBoot还提供了将其部署为外部容器中的Web存档的选项。在这种情况下,我们必须扩展SpringBootServletInitiator:
(9)打包和部署
Spring和SpringBoot两个框架都支持像Maven和Gradle这样的通用包管理技术
Spring Boot Maven插件在Maven中提供SpringBoot支持。它还允许打包可执行的JAR或WAR实现
在部署上下文中,SpringBoot相对于Spring的一些优点包括:
1提供嵌入式容器支持
2使用命令独立运行JAR的规定爪哇-JAR
3选项以排除依赖项,以避免在外部容器中部署时可能发生的JAR冲突。
4选项可以在部署时指定活动配置文件。
5用于集成测试的随机端口生成