b spirng boot入門介紹2.3~2.12

—> go to 總目錄

4.3 Profiles

Spring Profiles 讓應用在不用環境下有不同配置。任何@Component, @Configuration或者@ConfigurationProperties可以和@Profile標記,來顯示他們何時被加載。
在這裏插入圖片描述

如果@Configurationes通過@EnableConfigurationProperties而不是自動掃描,那麼@Profile的註解需要標註在@EnableConfigurationProperties的類上。這個示例中是會被自動掃描到

在配置中激活
在這裏插入圖片描述
命令行
--spring.profiles.active=dev,hsqldb

4.3.1 Adding Active Profiles

添加激活的profiles
首先激活profile可以用spring.profiles.active
屬性,但是command line可以覆蓋掉。
有時並不是覆蓋得關係,而是both都要激活的關係,使用include
在這裏插入圖片描述

4.3.2 用代碼激活Profile

  • SpringApplication.setAdditionalProfiles(…)在run之前
  • 或者使用ConfigurableEnvironment接口

4.4 Logging

集成了apache的common log,並且讓log的實現開放。默認的配置會提供
JAVA util logginglog4j2logback插件。log會輸出在console,但可以配置輸出在文件。
默認你使用了starters,logback會被用來logging。

當你部署你的應用都到容器或者容器server時,logging會通過java Util Logging API打印,這些日誌不會輸出到你的應用日誌。

4.4.1 日誌格式

在這裏插入圖片描述

  • 輸出的日期 毫秒級
  • 日誌級別:ERROR, WARN, INFO, DEBUG, or TRACE
  • 進程ID
  • 線程名
  • logger名
  • logmessage

4.4.2 console Output

默認輸出 ERROR+WARN+INFO
打開debug
在這裏插入圖片描述

彩色輸出

什麼jb介紹都有啊

4.4.3 文件輸出

在application 配置
logging.file.name
logging.file.path

在這裏插入圖片描述

日誌配置

默認是10mb。可以配置按時間和日期切分
單個文件的size
logging.file.max-size
單個文件的最大歷史
logging.file.max-history
文件保留的最大size
logging.file.total-size-cap
強制每次啓動是清楚
logging.file.clean-history-on-start

具體框架的日誌配置是不受spring管理的,比如logback的logback.configurationFile

4.4.4 Log Levels

日誌級別的配置
logging.level.=level的配置
在這裏插入圖片描述
也可以用環境變量來配置
LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_WEB=DEBUG

4.4.5 Log Groups

聚合相關logger的一起來配置十分有用。
使用logging.group.name
在這裏插入圖片描述
集中配置
在這裏插入圖片描述
內置的log group
在這裏插入圖片描述

4.4.6 自定義的log配置

classpath下的多種日誌框架,會被自動激活。但是可以依賴root或者classpath或者被Environment下指定的logging.config配置文件自定義。

你可以使用屬性org.springframework.boot.logging.LoggingSystem=value來指定特殊的日誌框架。這個值是全名匹配LoggingSystem。你可以通過value設置爲none來關閉日誌系統。

因爲日誌的初始化在ApplicationContext之前,所以不能使用@Configuration上的@PropertySources來配置能關閉和改變日誌系統的方式是通過環境變量

下列日誌系統的配置
在這裏插入圖片描述

推薦使用帶-spring的配置文件變體比如logback-spring.xml而不是原生的logback.xml

可以通過系統屬性的變量來設置
變量table
在這裏插入圖片描述
支持 的日誌框架
在這裏插入圖片描述

4.4.7 logback 擴展

Spring boot 擴展配置
因爲logback.yml被加載的太早了,但是可以靠logback-spring.xml或者logging.config來設置。

Profile-specific Configuration

在logback-spring.xml中依賴
springProfile標籤來配置不同的profile
在這裏插入圖片描述

Environment Properties

可以把從Environment中獲取屬性值。這麼做的好處是可以使用application.properties中的值來應用到logback的值。然而不是用value標籤,而是使用source屬性來表示。如果你想在其他地方存儲屬性,你可以使用scope屬性。還可以使用默認值去(defalutValue)
在這裏插入圖片描述

4.5 國際化

使用message.properties屬性來配置不同語言的messages。如果你的容器包含語言具體的屬性language-specific的屬性文件,你可以添加默認。如果沒找找到,就會根據配置的basename去匹配。
在這裏插入圖片描述

4.6 JSON

在這裏插入圖片描述
spring-boot-starter-json默認配置了JacksonObjectMapper會被自動配置
如何配置詳見 HOW-TO

4.7 Web 框架開發

spring mvc

webflux

JAS-RS 和jersey

rest encpoints

內嵌container

reactive server的配置

4.8 Rscoket

二進制傳輸歇息,可以提供異步消息傳輸模型。

RSocket RSocket是一個二進制的協議,以異步消息的方式提供4種對等的交互模型,以字節流的方式運行在TCP, WebSockets, Aeron等傳輸層之上。RSocket專門設計用於與Reactive風格應用配合使用,這些應用程序基本上是非阻塞的,並且通常(但不總是)與異步行爲配對。它是傳輸無關的,支持 TCP、WebSocket和Aeron UDP協議,並支持無語義損失的混合傳輸協議——回壓和流量控制仍然有效。

4.9 Security

4.9.1 MVC Secutity

4.9.2 WebFlux Security

4.9.3 OAuth2

是一種被官方運用的OAuth2

4.9.4 SAML 2.0

安全標記語言

4.9.5 Actuator Security

4.10 Working with SQL Database(推薦用mybatis 而不是這個)

Spring Framework 提供對sql database通用的支持。
從直接JDBC生成JdbcTemplate,Spring Data提供一種新的訪問方式
Repository,內置訪問模板

4.10.1 連接池的管理

推薦用HikariCP,優先命中

其次,Tomcat 池化的 DataSource

都沒有的話纔是Commons DBCP2

和JNDI的鏈接

4.10.2 Using JdbcTemplate

4.10.3 JPA和Spring Data JPA

4.10.4 JDBC

就是Repository的用法

4.10.5 使用H2 web console

4.10.6 Using JOOQ

面向對象的訪問。

4.11 working with nosql

Redis

cache 型數據庫

MongoDB

開源的Nosql document database—使用json-like的格式來存儲,而不是傳統的table-based。

Neo4j(存圖的數據庫–重要)

開源的 graph 數據庫,對於topo連接和類關係

solr 是一個apache的搜索引擎

ElasticSerch

開源文檔存儲,數據分析引擎。

Cassandra

開源的分佈式數據庫管理系統。

Couchbase

CouchBase是在memcached和redis之類緩存組件的基礎上發展而來的,被稱作爲可能是最好的緩存系統。所其必然能滿足之前的前輩所滿足不了的地方。
傳統的緩存組件包括memcached和redis有着這種或者那種的缺點:

Cluster支持完善度不夠或者直接沒有Cluster
沒有良好的高可用性機制,持久化支持的亦不是很完善
擴容和故障恢復能操作維護複雜
其他
而CouchBase則對上面的一些缺點都有着良好的支持。或者說
CouchBase所提供的任何單一功能,在市面上基本上都能找到一款數據庫能夠滿足。但是這些數據庫實際使用的話總是會有各種各樣的妥協,性能很好的話,擴展性可能很差之類的。而CouchBase的目標就是建立一個大一統,各種功能都包含可用,所謂接近完美的數據庫

LDAP 目錄服務

本身並不是db,而是目錄協議,任何滿足該協議的目錄,都會被整合。

4.12 Caching

首先springboot支持很多provider來進行緩存。未配置時會提供一個簡單的。
用法如下
Spring Caching。自動裝配通過@EnableCaching註解打開
添加一個caching
在這裏插入圖片描述
匹配這個i值,會把i值對應的結果緩存。

你可以使用JSR-107協議(JCache)註解,比如@CacheResult

4.12.1支持的providers

如果你沒有提供名爲cacheResolver的CacheManager或者 CacheResolver。會按照這個順序找
在這裏插入圖片描述
你也可以自定義一個CacheManager來對cache進行設置。
在這裏插入圖片描述

1. generic

通用的cachae是用org.springframework.cache.Cache。CacheManager會包裹所有的類型

2、JCache(JSR-107)

JCache通過在classpath目錄下放置javax.cache.spi.CachingProvider來啓動。這個JCacheCacheManagerspring-boot-starter-cache的Starter提供。Spring boot提供多樣的庫,比如Ehcache 3、Hazelcast
當出現多個provider時,通過配置來指定。
在這裏插入圖片描述

spring boot 對Hazelacast有很好的支持

有兩種方式去在javax.cache.cacheManager去自定義

  • 啓動時設置spring.cache.cache-names屬性,如果自定javax.cache.configuration.Configuration被發現,就會被啓用。
  • org.springframework.boot.autoconfigure.cache.JCacheManagerCustomizer被CacheManager定義,然後被CacheManger引用

3 EhCache 2.x

實用ehache.xml來做緩存

4 Hazelcast (spring boot 對其有很好的支持)

5 Infinispan

6 Couchbase

7 redis

高速內存數據庫

8 Caffeine

對guava cache的支持,對guava cache進行了重寫。

9 Simaple

默認使用了ConcurrentHashMap

10 None,關閉

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章