b spirng boot入门介绍2.3~2.12
文章目录
- 4.3 Profiles
- 4.4 Logging
- 4.4.1 日志格式
- 4.4.2 console Output
- 4.4.3 文件输出
- 4.4.4 Log Levels
- 4.4.5 Log Groups
- 4.4.6 自定义的log配置
- 4.4.7 logback 扩展
- 4.5 国际化
- 4.6 JSON
- 4.7 Web 框架开发
- 4.8 Rscoket
- 4.9 Security
- 4.10 Working with SQL Database(推荐用mybatis 而不是这个)
- 4.10.1 连接池的管理
- 4.10.2 Using JdbcTemplate
- 4.10.3 JPA和Spring Data JPA
- 4.10.4 JDBC
- 4.10.5 使用H2 web console
- 4.10.6 Using JOOQ
- 4.11 working with nosql
- 4.12 Caching
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 logging
,log4j2
和logback插件
。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
默认配置了Jackson
,ObjectMapper
会被自动配置
如何配置详见 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
来启动。这个JCacheCacheManager
被spring-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
。