摘要:進(jìn)行異常的捕捉與錯誤信息頁面的定制。告訴,這是一個對象,該對象應(yīng)該被注冊為在應(yīng)用程序上下文中的。不同框架的不同配置這里以作為演示默認(rèn)情況下,保護(hù)已啟用。你必須配置包含令牌的所有的網(wǎng)頁來工作。該命名結(jié)構(gòu)旨在幫你找到需要的。
導(dǎo)讀:
在上篇文章中我們了解到Spring Boot 的一些常用的外部化配置,在本篇中我們將會繼續(xù)對類的配置進(jìn)行了解
一個簡單的例子[錯誤頁面定制]:在 Spring Boot 中的約定大于配置 與 自動裝配使我們可以不必去像以往一樣配置各個框架之間的依賴與注入,但是有時Spring Boot 提供給我們的默認(rèn)配置并不能完全滿足我們的需求,因此個性化的配置或者叫自定義裝配內(nèi)容便為我們提供了這種便利。
這里我們以一個簡單的在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容器定制器,我們通過對其方法的覆蓋重新達(dá)到了自定義錯誤頁面的效果。
當(dāng)然 如果使用的是Spring MVC 的話我們也可以使用 Spring MVC 提供的@ExceptionHandler方法和@ControllerAdvice。ErrorController進(jìn)行異常的捕捉與錯誤信息頁面的定制。
備注:
@Configuration:表示這個類可以使用 Spring IoC 容器作為 bean 定義的來源。
@Bean :告訴 Spring,這是一個bean對象,該對象應(yīng)該被注冊為在 Spring 應(yīng)用程序上下文中的 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(); // 默認(rèn)情況下,CSRF保護(hù)已啟用。你必須配置包含_csrf令牌的所有的網(wǎng)頁來工作。 // 你可以隨時禁用CSRF保護(hù)。如果在代碼中配置: 解決post請無法提交 http .csrf().disable(); //in a frame because it set "X-Frame-Options" to "DENY". http .headers() .frameOptions() .sameOrigin(); } }
在一般情況下我們要對Spring Boot 集成的一些框架做些自定義配置時, 可以去實(shí)現(xiàn) 對應(yīng)框架的XXXConfigurerAdapter,然后通過EnableXXX注解進(jìn)行修飾 之后用 Configuration 注解修飾,最后對其方法進(jìn)行覆蓋從而到達(dá)自定義配置的目的,當(dāng)然具體的配置還是需求去翻閱對應(yīng)的文檔說明來了解。
更多Spring Boot項(xiàng)目提供的框架整合(Starter POMs):Starter POMs是可以包含到應(yīng)用中的一個方便的依賴關(guān)系描述符集合。你可以獲取所有Spring及相關(guān)技術(shù)的一站式服務(wù),而不需要翻閱示例代碼,拷貝粘貼大量的依賴描述符。例如,如果你想使用Spring和JPA進(jìn)行數(shù)據(jù)庫訪問,只需要在你的項(xiàng)目中包含spring-boot-starter-data-jpa依賴,然后你就可以開始了。
該starters包含很多你搭建項(xiàng)目,快速運(yùn)行所需的依賴,并提供一致的,管理的傳遞依賴集。
名字有什么含義:所有的starters遵循一個相似的命名模式:spring-boot-starter-,在這里是一種特殊類型的應(yīng)用程序。該命名結(jié)構(gòu)旨在幫你找到需要的starter。很多IDEs集成的Maven允許你通過名稱搜索依賴。例如,使用相應(yīng)的Eclipse或STS插件,你可以簡單地在POM編輯器中點(diǎn)擊ctrl-space,然后輸入"spring-boot-starter"可以獲取一個完整列表。
下面的應(yīng)用程序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 訪問數(shù)據(jù)庫。
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 應(yīng)用開發(fā),包含 Tomcat 和 spring-mvc。
spring-boot-starter-websocket 支持使用 Tomcat 開發(fā) WebSocket 應(yīng)用。
spring-boot-starter-ws 支持 Spring Web Services。
spring-boot-starter-actuator 添加適用于生產(chǎn)環(huán)境的功能,如性能指標(biāo)和監(jiān)測等功能。
spring-boot-starter-remote-shell 添加遠(yuǎn)程 SSH 支持。
spring-boot-starter-jetty 使用 Jetty 而不是默認(rèn)的 Tomcat 作為應(yīng)用服務(wù)器。
spring-boot-starter-log4j 添加 Log4j 的支持。
spring-boot-starter-logging 使用 Spring Boot 默認(rèn)的日志框架 Logback。
spring-boot-starter-tomcat 使用 Spring Boot 默認(rèn)的 Tomcat 作為應(yīng)用服務(wù)器。
結(jié)語:關(guān)于Spring Boot 常用的一些配置方式做了一個簡要的介紹,從這些配置中我們也可以看到Spring Boot 為我們提供的各種默認(rèn)配置的好處,當(dāng)我們不需要這些默認(rèn)值時,我們有兩種常用的覆蓋方式:
1.通過 application.yml文件進(jìn)行定義。
2.通過實(shí)現(xiàn)對應(yīng)的ConfigurerAdapter,并托管給Spring 容器來進(jìn)行定義。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/66770.html
摘要:需要注意的是必須要使用版本為以上才支持屬性。與格式文件不同,正對不同的,無法在一個文件設(shè)置,官方采用命名形式為格式來達(dá)成一樣的效果。采用方式添加的是屬于額外激活的,也就是說覆蓋掉外部傳入的指定的。 showImg(https://segmentfault.com/img/remote/1460000019924197?w=1050&h=500); Spring Boot Profile...
摘要:服務(wù)治理上是由開源的一款基于的服務(wù)治理組件,包括及。由于種種原因,版本已經(jīng)凍結(jié)開發(fā),目前最新版本是年月份發(fā)布的版本。服務(wù)發(fā)現(xiàn)選型其中比較受眾關(guān)注的就是和這兩款產(chǎn)品,這兩款產(chǎn)品各有所長,各有所適,開發(fā)者可用按需選擇。 服務(wù)治理:Spring Cloud Eureka(上) Netflix Eureka是由Netflix開源的一款基于REST的服務(wù)治理組件,包括Eureka Server及...
摘要:前景介紹在日常的工作中,我們經(jīng)常會用到郵件服務(wù),比如發(fā)送驗(yàn)證碼,找回密碼確認(rèn),注冊時郵件驗(yàn)證等,所以今天在這里進(jìn)行郵件服務(wù)的一些操作。 前景介紹 在日常的工作中,我們經(jīng)常會用到郵件服務(wù),比如發(fā)送驗(yàn)證碼,找回密碼確認(rèn),注冊時郵件驗(yàn)證等,所以今天在這里進(jìn)行郵件服務(wù)的一些操作。 大致思路 我們要做的其實(shí)就是把Java程序作為一個客戶端,然后通過配置SMTP協(xié)議去連接我們所使用的發(fā)送郵箱(fr...
摘要:導(dǎo)讀在上一篇文章中對集成做了一個簡單的介紹,這篇文章中主要圍繞集成展開文章末尾附有學(xué)習(xí)資料。當(dāng)我們使用元素來定義一個時,如果沒有指定對應(yīng)關(guān)聯(lián)的對象,默認(rèn)會使用。在進(jìn)行認(rèn)證的時候需要一個來獲取用戶的信息,其中包括用戶名密碼和所擁有的權(quán)限等。 導(dǎo)讀 在上一篇文章中對Spring Boot 集成Shrio做了一個簡單的介紹,這篇文章中主要圍繞Spring Boot 集成 Spring S...
摘要:本文章的源碼再文章末尾什么是查詢緩存有一級緩存和二級緩存。默認(rèn)開啟一級緩存。證明了一級緩存只是在數(shù)據(jù)庫會話內(nèi)部共享的。但是,整合到中后,一級緩存就會被關(guān)閉。根據(jù)時間表比如沒有刷新間隔緩存不會以任何時間順序來刷新。 倉庫地址:spring-boot-learning歡迎star、fork,給作者一些鼓勵 學(xué)習(xí)SpringBoot集成Mybatis的第二章,了解到Mybatis自帶的緩存機(jī)...
閱讀 1633·2021-09-02 15:11
閱讀 1972·2019-08-30 14:04
閱讀 2558·2019-08-27 10:52
閱讀 1574·2019-08-26 11:52
閱讀 1196·2019-08-23 15:26
閱讀 2614·2019-08-23 15:09
閱讀 2603·2019-08-23 12:07
閱讀 2232·2019-08-22 18:41