摘要:进行异常的捕捉与错误信息页面的定制。告诉,这是一个对象,该对象应该被注册为在应用程序上下文中的。不同框架的不同配置这里以作为演示默认情况下,保护已启用。你必须配置包含令牌的所有的网页来工作。该命名结构旨在帮你找到需要的。
导读:
在上篇文章中我们了解到Spring Boot 的一些常用的外部化配置,在本篇中我们将会继续对类的配置进行了解
一个简单的例子[错误页面定制]:在 Spring Boot 中的约定大于配置 与 自动装配使我们可以不必去像以往一样配置各个框架之间的依赖与注入,但是有时Spring Boot 提供给我们的默认配置并不能完全满足我们的需求,因此个性化的配置或者叫自定义装配内容便为我们提供了这种便利。
这里我们以一个简单的在Spring Boot 中自定义错误页面的例子做为展示:
@Configuration public class ErrorPageConfig { @Bean public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer(){ return new MyCustomizer(); } private static class MyCustomizer implements EmbeddedServletContainerCustomizer { @Override public void customize(ConfigurableEmbeddedServletContainer container) { container.addErrorPages(new ErrorPage(HttpStatus.FORBIDDEN, "/403")); container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404")); } } }
EmbeddedServletContainerCustomizer 正如名字一样 - 嵌入式Servlet容器定制器,我们通过对其方法的覆盖重新达到了自定义错误页面的效果。
当然 如果使用的是Spring MVC 的话我们也可以使用 Spring MVC 提供的@ExceptionHandler方法和@ControllerAdvice。ErrorController进行异常的捕捉与错误信息页面的定制。
备注:
@Configuration:表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源。
@Bean :告诉 Spring,这是一个bean对象,该对象应该被注册为在 Spring 应用程序上下文中的 bean。
这里以Spring Security 作为演示:
@Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private CustomAuthenticationProvider customAuthenticationProvider; @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.authenticationProvider(customAuthenticationProvider); } @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/reg", "/login", "/css/**", "/js/**", "/img/**", "/music/**", "/plugins/**", "/upload/**", "/api/**").permitAll() .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") .defaultSuccessUrl("/") .permitAll() .and() .logout() .permitAll(); // 默认情况下,CSRF保护已启用。你必须配置包含_csrf令牌的所有的网页来工作。 // 你可以随时禁用CSRF保护。如果在代码中配置: 解决post请无法提交 http .csrf().disable(); //in a frame because it set "X-Frame-Options" to "DENY". http .headers() .frameOptions() .sameOrigin(); } }
在一般情况下我们要对Spring Boot 集成的一些框架做些自定义配置时, 可以去实现 对应框架的XXXConfigurerAdapter,然后通过EnableXXX注解进行修饰 之后用 Configuration 注解修饰,最后对其方法进行覆盖从而到达自定义配置的目的,当然具体的配置还是需求去翻阅对应的文档说明来了解。
更多Spring Boot项目提供的框架整合(Starter POMs):Starter POMs是可以包含到应用中的一个方便的依赖关系描述符集合。你可以获取所有Spring及相关技术的一站式服务,而不需要翻阅示例代码,拷贝粘贴大量的依赖描述符。例如,如果你想使用Spring和JPA进行数据库访问,只需要在你的项目中包含spring-boot-starter-data-jpa依赖,然后你就可以开始了。
该starters包含很多你搭建项目,快速运行所需的依赖,并提供一致的,管理的传递依赖集。
名字有什么含义:所有的starters遵循一个相似的命名模式:spring-boot-starter-,在这里是一种特殊类型的应用程序。该命名结构旨在帮你找到需要的starter。很多IDEs集成的Maven允许你通过名称搜索依赖。例如,使用相应的Eclipse或STS插件,你可以简单地在POM编辑器中点击ctrl-space,然后输入"spring-boot-starter"可以获取一个完整列表。
下面的应用程序starters是Spring Boot在org.springframework.boot组下提供的:
spring-boot-starter 核心 POM,包含自动配置支持、日志库和对 YAML 配置文件的支持。
spring-boot-starter-amqp 通过 spring-rabbit 支持 AMQP。
spring-boot-starter-aop 包含 spring-aop 和 AspectJ 来支持面向切面编程(AOP)。
spring-boot-starter-batch 支持 Spring Batch,包含 HSQLDB。
spring-boot-starter-data-jpa 包含 spring-data-jpa、spring-orm 和 Hibernate 来支持 JPA。
spring-boot-starter-data-mongodb 包含 spring-data-mongodb 来支持 MongoDB。
spring-boot-starter-data-rest 通过 spring-data-rest-webmvc 支持以 REST 方式暴露 Spring Data 仓库。
spring-boot-starter-jdbc 支持使用 JDBC 访问数据库。
spring-boot-starter-security 包含 spring-security。
spring-boot-starter-test 包含常用的测试所需的依赖,如 JUnit、Hamcrest、Mockito 和 spring-test 等。
spring-boot-starter-velocity 支持使用 Velocity 作为模板引擎。
spring-boot-starter-web 支持 Web 应用开发,包含 Tomcat 和 spring-mvc。
spring-boot-starter-websocket 支持使用 Tomcat 开发 WebSocket 应用。
spring-boot-starter-ws 支持 Spring Web Services。
spring-boot-starter-actuator 添加适用于生产环境的功能,如性能指标和监测等功能。
spring-boot-starter-remote-shell 添加远程 SSH 支持。
spring-boot-starter-jetty 使用 Jetty 而不是默认的 Tomcat 作为应用服务器。
spring-boot-starter-log4j 添加 Log4j 的支持。
spring-boot-starter-logging 使用 Spring Boot 默认的日志框架 Logback。
spring-boot-starter-tomcat 使用 Spring Boot 默认的 Tomcat 作为应用服务器。
结语:关于Spring Boot 常用的一些配置方式做了一个简要的介绍,从这些配置中我们也可以看到Spring Boot 为我们提供的各种默认配置的好处,当我们不需要这些默认值时,我们有两种常用的覆盖方式:
1.通过 application.yml文件进行定义。
2.通过实现对应的ConfigurerAdapter,并托管给Spring 容器来进行定义。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/66770.html
摘要:需要注意的是必须要使用版本为以上才支持属性。与格式文件不同,正对不同的,无法在一个文件设置,官方采用命名形式为格式来达成一样的效果。采用方式添加的是属于额外激活的,也就是说覆盖掉外部传入的指定的。 showImg(https://segmentfault.com/img/remote/1460000019924197?w=1050&h=500); Spring Boot Profile...
摘要:服务治理上是由开源的一款基于的服务治理组件,包括及。由于种种原因,版本已经冻结开发,目前最新版本是年月份发布的版本。服务发现选型其中比较受众关注的就是和这两款产品,这两款产品各有所长,各有所适,开发者可用按需选择。 服务治理:Spring Cloud Eureka(上) Netflix Eureka是由Netflix开源的一款基于REST的服务治理组件,包括Eureka Server及...
摘要:前景介绍在日常的工作中,我们经常会用到邮件服务,比如发送验证码,找回密码确认,注册时邮件验证等,所以今天在这里进行邮件服务的一些操作。 前景介绍 在日常的工作中,我们经常会用到邮件服务,比如发送验证码,找回密码确认,注册时邮件验证等,所以今天在这里进行邮件服务的一些操作。 大致思路 我们要做的其实就是把Java程序作为一个客户端,然后通过配置SMTP协议去连接我们所使用的发送邮箱(fr...
摘要:导读在上一篇文章中对集成做了一个简单的介绍,这篇文章中主要围绕集成展开文章末尾附有学习资料。当我们使用元素来定义一个时,如果没有指定对应关联的对象,默认会使用。在进行认证的时候需要一个来获取用户的信息,其中包括用户名密码和所拥有的权限等。 导读 在上一篇文章中对Spring Boot 集成Shrio做了一个简单的介绍,这篇文章中主要围绕Spring Boot 集成 Spring S...
摘要:本文章的源码再文章末尾什么是查询缓存有一级缓存和二级缓存。默认开启一级缓存。证明了一级缓存只是在数据库会话内部共享的。但是,整合到中后,一级缓存就会被关闭。根据时间表比如没有刷新间隔缓存不会以任何时间顺序来刷新。 仓库地址:spring-boot-learning欢迎star、fork,给作者一些鼓励 学习SpringBoot集成Mybatis的第二章,了解到Mybatis自带的缓存机...
阅读 1610·2021-09-02 15:11
阅读 1954·2019-08-30 14:04
阅读 2538·2019-08-27 10:52
阅读 1556·2019-08-26 11:52
阅读 1157·2019-08-23 15:26
阅读 2586·2019-08-23 15:09
阅读 2571·2019-08-23 12:07
阅读 2204·2019-08-22 18:41