23. SpringApplication特性
- Banner
- SpringApplicationBuilder
- Events and Listeners
- Web Environment
- ApplicationArguments: 获取SpringApplication.run(...)
- ApplicationRunner and CommandLineRunner
- ExitCodeGenerator 退出码
- Admin Features: spring.application.admin.enabled配置
24. 外部配置
重载顺序:
devtools
--> @TestPropertySource
--> @SpringBootTest#properties
--> 命令行参数
--> SPRING_APPLICATION_JSON
--> ServletConfig初始化参数
--> ServletContext初始化参数
--> JNDI属性,来自:java:comp/env
--> Java系统属性 System.getPropertiies()
--> 系统环境变量
--> RandomValuePropertySource
--> 打好的jar包之外的应用属性,.properties或YAML
--> 打好的jar内部的应用属性,.properties或YAML
--> ...
YAML文件:缺点是无法使用@PropertySource指定配置文件。
@ConfigurationProperteis VS @Value
25. 多配置
26. Logging
由于日志初始化在ApplicationContext创建之前,所以在@Configuration文件中通过@PropertySources控制日志是不可能的,唯一的方法是通过系统配置。
Logback log4j2 Java Util logging
27. JSON
Jackson
Gson
JSON-B
28. 开发Web应用
静态资源的处理
29. 安全性
30. 使用关系型数据库
默认数据源的选择:HikariCP(spring-boot-starter-jdbc或spring-boot-starter-data-jpa中包含了该项),Tomcat Pooling DataSource, Commons DBCP2,相关配置项则为 spring.datasource.type
JdbcTemplate VS NamedParmeterJdbcTemplate
spring-boot-starter-jpa包中包含了:Hibernate, Spring Data JPA, Spring ORMs
31. 使用NOSQL
spring-boot-starter-data-redis:默认使用Lettuce;如果能够找到commons-pool2,将会获得一个池化的连接工厂。
Lettuce VS Jedis
32. 缓存
- Generic
- JCache (JSR-107)(EhCache 3, Hazelcast, Infinispan, etc)
- EhCache 2.x
- Hazelcast
- Infinispan
- Couchbase
- Redis
- Caffeine
- Guava
- Simple:没有添加library的默认配置,则使用ConcurrentHashMap。
- None:禁用,设置spring.cache.type=none。
33. 消息
JMS:ActiveMQ支持,Artemis支持,HornetQ支持 JmsTemplate
AMQP:RabbitMQ支持 AmqpTemplate
KafkaL:KafkaTemplate
34. RestTemplate
RestTemplate定制化
35. WebClient
36. 校验
@Validation
37. 发送邮件
JavaMailSender 相关jar: spring-boot-starter-mail
38. 使用JTA的分布式事务
JtaTransactionManager
自动配置的JMS,DataSource和JPA beans支持XA资源。
spring.jta.enabled可设置JTA的自动配置。
Atomikos事务管理器
Bitronix事务管理器
39. Hazelcast
40. Quartz Scheduler
41. Spring Integration
42. Spring Session
43. Monitoring and Management over JMX