pring 为开发 Java 程序提供了全面的基础架构支持,包括依赖注入以及一些开箱即用的模块,大大缩短了程序的开发时间。
Spring JDBC 、 Spring MVC 、 Spring AOP 、 Spring TEST 、 Spring Security 、 Spring ORM
SpringBoot 是一个轻量级的微服务器,相比 Spring ,它消除了 xml 的配置,嵌入了 Tomcat 、 Jetty Undertow 。尽可能自动的配置 Spring应用。
SpringBoot 只需要一个依赖项来启动和运行 Web 应用程序:
SpringBoot 应用程序的入口是使用 @SpringBootApplication 注释的类:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
SpringBoot 打成 jar 包也十分方便,因为支持 Maven 的通用包管理技术,打包完后,只需要使用 Java -jar jarname.jar 即可运行
一、Spring 的介绍
简而言之, Spring 框架为开发 Java 应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开箱即用的模块,如:
Spring JDBC
Spring MVC
Spring Security
Spring AOP
Spring ORM
Spring Test
这些模块可以大大缩短应用程序的开发时间。例如,在 Java Web 开发的早期阶段,我们需要编写大量的重复代码来将记录插入到数据源中。但是通过使用 Spring JDBC 模块的 JDBCTemplate ,我们可以将它简化为只需几个简单配置或者几行代码。
二、SpringBoot 的介绍
Spring Boot 基本上是 Spring 框架的扩展,它消除了设置 Spring 应用程序所需的复杂例行配置。
它的目标和 Spring 的目标是一致的,为更快,更高效的开发生态系统铺平了道路。以下是 Spring Boot 中的一些功能:
通过starter 这一个依赖,以简化构建和复杂的应用程序配置。
可以直接main 函数启动,嵌入式 web 服务器,避免了应用程序部署的复杂性, Metrics 度量, Helth check 健康检查和外部化配置。
尽可能的自动化配置Spring 功能。
三、Spring 与 SpringBoot 的比较
3.1 Maven 依赖
首先,让我们看一下使用 Spring 创建 Web 应用程序所需的最小依赖项:
与 Spring 不同, Spring Boot 只需要一个依赖项来启动和运行 Web 应用程序:
在构建期间,所有其他依赖项将自动添加到最终归档中。
Spring Boot 为不同的 Spring 模块提供了许多入门依赖项。一些最常用的是:
spring-boot-starter-data-jpa
spring-boot-starter-security
spring-boot-starter-test
spring-boot-starter-web
spring-boot-starter-thymeleaf
3.2 MVC 配置
下面来探讨一下使用 Spring 和 Spring Boot 创建 JSP Web 应用程序所需的配置。
public class MyWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.setConfigLocation("com.test.package");
container.addListener(new ContextLoaderListener(context));
ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(context));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
}
我们还需要将 @EnableWebMvc 注解添加到 @Configuration 注解类,并定义一个视图解析器来解析从控制器返回的视图:
@EnableWebMvc
@Configuration
public class ClientWebConfig implements WebMvcConfigurer {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver bean = new InternalResourceViewResolver();
bean.setViewClass(JstlView.class);
bean.setPrefix("/WEB-INF/view/");
bean.setSuffix(".jsp");
return bean;
}
}
与所有这些相比,一旦我们添加了 Spring boot web starter , Spring Boot 只需要一些属性来使上面的事情正常工作:
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
上面的所有 Spring 配置都是通过一个名为 auto-configuration 的进程添加 Boot web starter 来自动包含的。
这意味着 Spring Boot 将自动扫描应用程序中存在的依赖项,属性和 bean ,并根据这些内容启用相应的配置。
3.3 模板引擎配置
再来看看如何在 Spring 和 Spring Boot 中配置 Thymeleaf 模板引擎,两者有啥区别?
在 Spring 中,我们需要为视图解析器添加 thymeleaf-spring5 依赖项和一些配置:
@Configuration
@EnableWebMvc
public class MvcWebConfig implements WebMvcConfigurer {
@Autowired
private ApplicationContext applicationContext;
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(applicationContext);
templateResolver.setPrefix("/WEB-INF/views/");
templateResolver.setSuffix(".html");
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
registry.viewResolver(resolver);
}
}
Spring Boot 只需要 spring-boot-starter-thymeleaf 的依赖项 来启用 Web 应用程序中的 Thymeleaf 支持。
一旦依赖关系添加成功后,我们就可以将模板添加到 src / main / resources / templates 文件夹中, Spring Boot 将自动显示它们。
3.4 安全配置
为简单起见,我们将看到如何使用 Spring 和 Spring Boot 框架启用默认的 HTTP Basic 身份验证。
让我们首先看一下使用 Spring 启用 Security 所需的依赖关系和配置。
Spring 需要标准的 spring-security-web 和 spring-security-config 依赖项来在应用程序中设置 Security 。
接下来, 我们需要添加一个扩展 WebSecurityConfigurerAdapter 的类,并使用 @EnableWebSecurity 注解:
@Configuration
@EnableWebSecurity
public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user1")
.password(passwordEncoder().encode("user1Pass"))
.authorities("ROLE_USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated().and().httpBasic();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
同样, Spring Boot 也需要这些依赖项才能使其工作。但是我们只需要定义 spring-boot-starter-security 的依赖关系,它会自动将所有相关的依赖项添加到类路径中。
3.5 应用引导 Application Bootstrap
Spring 和 Spring Boot 中应用程序引导的基本区别在于 servlet 。
Spring 使用 web.xml 或 SpringServletContainerInitializer 作为其引导入口点。
spring boot 仅仅使用 Servlet 3 来引导程序。
首先来说说 spring 引导
方法一: web.xml 引导方法
Servlet 容器(服务器)读取 web.xml
web.xml 中定义的 DispatcherServlet 由容器实例化
DispatcherServlet 通过读取 WEB-INF / {servletName} -servlet.xml 来创建 WebApplicationContext
最后,DispatcherServlet 注册在应用程序上下文中定义的 bean
方法二: servlet 3+ 引导方法
容器搜索实现ServletContainerInitializer 的 类并执行
SpringServletContainerInitializer 找到实现类 WebApplicationInitializer 的子类
WebApplicationInitializer 创建会话使用 XML 或上下文 @Configuration 类
WebApplicationInitializer 创建 DispatcherServlet ,使用先前创建的上下文。
再来说说 Spring Boot 引导
Spring Boot 应用程序的入口点是使用 @SpringBootApplication 注释的类:
@SpringBootApplication
function(){ //外汇返佣:http://www.fx61.com/public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
默认情况下, Spring Boot 使用嵌入式容器来运行应用程序。在这种情况下, Spring Boot 使用 public static void main 入口点来启动嵌入式Web 服务器。
此外,它还负责将 Servlet , Filter 和 ServletContextInitializer bean 从应用程序上下文绑定到嵌入式 servlet 容器。
Spring Boot 的另一个特性是它会自动扫描同一个包中的所有类或 Main 类的子包中的组件。
Spring Boot 提供了将其部署为外部容器中的 Web 存档的选项。在这种情况下,我们必须扩展 SpringBootServletInitializer :
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
// ...
}
外部 Servlet 容器查找在 Web 归档文件的 META-INF 文件中定义的 Main-class , SpringBootServletInitializer 将负责绑定 Servlet ,Filter 和 ServletContextInitializer 。
3.6 打包和部署
最后,让我们看看如何打包和部署应用程序。这两个框架都支持 Maven 和 Gradle 等常见的包管理技术。但是在部署方面,这些框架差异很大。
例如, Spring Boot Maven 插件在 Maven 中提供 Spring Boot 支持。它还允许打包可执行 jar 或 war 档案并“就地”运行应用程序。
与 spring 相比,在部署环境中 Spring Boot 的一些优点包括
提供嵌入式容器支持
使用命令java -jar 独立运行 jar
在外部容器中部署时,可以选择排除依赖关系以避免潜在的jar 冲突
部署时灵活指定配置文件的选项
用于集成测试的随机端口生成
SpringBoot 和 spring 究竟有什么区别,重点对比 MVC 模块以及 Security 模块在两大框架使用时的区别。
1. 啥是 spring ?
简而言之,Spring 框架为开发 Java 应用程序提供了全面的基础架构支持。
它包含了一些很好的功能,如依赖注入和开箱即用的模块,如:
Spring JDBC
Spring MVC
Spring Security
Spring AOP
Spring ORM
Spring Test
这些模块可以大大缩短应用程序的开发时间。
例如,在Java Web 开发的早期阶段,我们需要编写大量的重复代码来记录插入到数据源中。但是通过使用 Spring JDBC
模块的JDBCTemplate ,我们可以将它简化为只需几个简单配置或者几行代码。
2. 啥是 spring boot ?
Spring Boot 基本是 Spring 框架的扩展,它消除了设置 Spring 应用程序所需的复杂例行配置。
它的目标和Spring 的目标是一致的,为更快,更高效的开发生态系统铺平了道路。
以下是Spring Boot 中的一些功能:
通过starter 这一个依赖,以简化构建和复杂的应用程序配置。
可以直接main 函数启动,嵌入式 web 服务器,避免了应用程序部署的复杂性。
Metrics 度量, Helth check 健康检查和外部化配置。
自动化配置sping 功能 - 尽可能的。
以下是两者的区别
3.Maven 依赖
4.MVC 配置
5. 配置模板引擎
6. 安全配置
7. 应用引导 Application Bootstrap
8. 打包和部署
这两个框架都支持Maven 和 Gradle 等常见的包管理技术。但在部署方面,差异很大。
例如:Spring Boot Maven 插件在 Maven 中提供 Spring Boot 支持。它还允许打包可执行 jar 或 war 档案并就地运行应用程序。郑州不孕不育医院的排名:http://jbk.39.net/yiyuanzaixian/zztjyy/
与spring 相比,在部署环境中 Spring Boot 的一些优点包括:
提供嵌入式容器支持
使用命令java-jar 独立运行 jar 。
在外部容器中部署时,可以选择排除依赖关系以避免潜在的jar 冲突。
配置时灵活指定配置文件的选项。
用于集成测试的随机端口生产。
9. 小结
用一句话概述就是:SpringBoot 只是 Spring 本身的扩展,使开发,测试和部署更加方便。
10. 和 SpringMVC 区别
Springboot 是 springMVC 的升级版,两者没有必然联系。 Spring Boot 是伴随着 Spring4.0 诞生的。
SpringBoot 的特点:
a. 化繁为简,简化配置。
b. 备受关注,是下一代框架。https://yiyuan.9939.com/yyk_62925/jieshao.html
c. 微服务的入门级框架
微服务是当下比较流行的架构, spring 为微服务提供了一整套组件,称为 SpringCloud , springcloud 是建立在 Spring Boot 的基础之上的。
d. 使编码变得简单,使配置变得简单,使部署变得简单,使监控变得简单。