springboot补充
springboot中的日志:
在默认的spring-boot-starter中,会引入spring-boot-starter-logging,

而springboot-starte-longing中引入了:slf4j规范和logback默认实现。

springboot对jdbc的支持:
引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
点进去实际上就是依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.1.5.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.2.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.7.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
一个连接池,一个spring-jdbc的包。这个的好处就是,通过条件注解来决定是否把jdbc-template装载到ioc容器中:
@Configuration
@ConditionalOnClass({ DataSource.class, JdbcTemplate.class })
@ConditionalOnSingleCandidate(DataSource.class)
@AutoConfigureAfter(DataSourceAutoConfiguration.class)
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcTemplateAutoConfiguration { @Configuration
static class JdbcTemplateConfiguration { private final DataSource dataSource; private final JdbcProperties properties; JdbcTemplateConfiguration(DataSource dataSource, JdbcProperties properties) {
this.dataSource = dataSource;
this.properties = properties;
} @Bean
@Primary
@ConditionalOnMissingBean(JdbcOperations.class)
public JdbcTemplate jdbcTemplate() {
JdbcTemplate jdbcTemplate = new JdbcTemplate(this.dataSource);
JdbcProperties.Template template = this.properties.getTemplate();
jdbcTemplate.setFetchSize(template.getFetchSize());
jdbcTemplate.setMaxRows(template.getMaxRows());
if (template.getQueryTimeout() != null) {
jdbcTemplate
.setQueryTimeout((int) template.getQueryTimeout().getSeconds());
}
return jdbcTemplate;
} } @Configuration
@Import(JdbcTemplateConfiguration.class)
static class NamedParameterJdbcTemplateConfiguration { @Bean
@Primary
@ConditionalOnSingleCandidate(JdbcTemplate.class)
@ConditionalOnMissingBean(NamedParameterJdbcOperations.class)
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(
JdbcTemplate jdbcTemplate) {
return new NamedParameterJdbcTemplate(jdbcTemplate);
} } }
spring中多数据源问题:
简单的可以借助AbstractRoutingDataSource这个抽象类,结合aop来实现动态切换。
springboot的实现:
@Configuration
public class JdbcDataSourceConfig { /**
* 配置连接属性1
* 前缀后面的属性要与DataSourceProperties类中的属性对应
* @return
*/
@Bean
@ConfigurationProperties(prefix = "app.datasource.db1")
public DataSourceProperties db1Properties(){
return new DataSourceProperties();
} /**
* 配置连接属性2
* 前缀后面的属性要与DataSourceProperties类中的属性对应
* @return
*/
@Bean
@ConfigurationProperties(prefix = "app.datasource.db2")
public DataSourceProperties db2Properties(){
return new DataSourceProperties();
} /**
* 使用属性配置信息构建一个DataSource
* @return
*/
@Bean
public DataSource db1DataSource(){
return db1Properties().initializeDataSourceBuilder().build();
} @Bean
public DataSource db2DataSource(){
return db2Properties().initializeDataSourceBuilder().build();
} /**
* 不单独配置bean的名称了,使用方法名作为默认名称
* @return
*/ @Bean
public JdbcTemplate templateOne(){
return new JdbcTemplate(db1DataSource());
} @Bean
public JdbcTemplate templateTwo(){
return new JdbcTemplate(db2DataSource());
} }
测试代码:
@SpringBootTest(classes= Application.class)
@RunWith(SpringRunner.class)
public class JdbcTest { @Autowired
JdbcTemplate templateOne; @Test
public void test() throws Exception{ String sql="insert into user(name,age) values('aa',18)";
templateOne.execute(sql);
} }
报错:

因为在将DataSourceProperties去注入到DataSource的时候发现存在多个DataSourceProperties的bean。因为去无论是db1Properties方法还是还是db2Properties都是返回一个DataSourceProperties,springboot无法根据上下文去推导,是需要哪个注入。jdbctemplate 通过bean的名字指定需要加载哪一个。
Actuator:springboot的监控服务:
引入:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
启动应用: 访问: http://localhost:8080/actuator

springboot补充的更多相关文章
- Spring Boot 集成 RabbitMQ 实战
Spring Boot 集成 RabbitMQ 实战 特别说明: 本文主要参考了程序员 DD 的博客文章<Spring Boot中使用RabbitMQ>,在此向原作者表示感谢. Mac 上 ...
- springboot 快速开发的定制补充
增强 SpringBoot 快速开发工具 项目地址:https://gitee.com/sanri/web-ui 优点:这是一个 web 通用配置的组件,即插即用,可用于新项目或私活.是对 Sprin ...
- springboot项目抓数据后优化配置及四个补充
昨天搞了一个抓取某某平台信息的抓取功能,其中有一个地址url,昨天是写死的,之前也进行配置过,印象有些模糊,今天想配置一下,在properties文件中,由此引发了下面的一系列总结操作: 1.原始模式 ...
- SpringBoot系列: Spring MVC视图方法的补充
SpringMVC 视图方法的参数, 已经在这个文章中写得非常清楚了, 链接为 https://www.cnblogs.com/morethink/p/8028664.html 这篇文章做一些补充. ...
- springboot知识点补充(一)
测试配置 @RunWith(SpringRunner.class) @SpringBootTest @Configuration @ActiveProfiles("test") p ...
- IntelliJ IDEA 2017版 SpringBoot的web项目补充
一.注解 @SpringBootApplication:Spring Boot项目的核心注解,主要目的是开启自动配置. @Configuration:这是一个配置Sprin ...
- IntelliJ IDEA 2017版 spring-boot基础补充,原理详解
一.Spring发展史 1.Spring1.x 版本一时代主要是通过XML文件配置bean,在java和xml中不断切换,在学习java web 初期的时候经常使用 2.Spring2 ...
- 补充: SpringBoot
SpringBoot Spring Boot 约定大于配置 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程. 该框 ...
- springboot之对之前的补充
Spring Cloud 初级 一. Spring Boot 回顾 1 什么是 Spring Boot? Spring Boot 是在 Spring 的基础之上产生的(确切的说是在 Sprin ...
随机推荐
- jenkins任务
#################################jenkins任务1.打包.持续集成.部署.定时运行 2.创建自由风格的一个任务 3.一个任务的核心步骤就是,build即创建,即运行 ...
- 【原创】ARM平台内存和cache对xenomai实时性的影响
目录 1. 问题概述 2. stress 内存压力原理 2. cache 因素 2.1 未加压 2.2 加压(cpu/io) 3. 内存管理因素 3.1 内存分配/释放 3.2 MMU拥塞 4 总结 ...
- 【杂谈】JS相关的线程模型整理
1.JS是单线程吗? 是的,到目前为止,JS语言没有多线程的语法,它的执行引擎只支持单线程,也就是一个JavaScript进程内只有一个线程. 2.事件循环什么? 事件循环就是执行线程不断的从队列中取 ...
- 18、Celery
Celery 1.什么是Clelery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组 ...
- Pandas_基础_全
Pandas基础(全) 引言 Pandas是基于Numpy的库,但功能更加强大,Numpy专注于数值型数据的操作,而Pandas对数值型,字符串型等多种格式的表格数据都有很好的支持. 关于Numpy的 ...
- tp6.0.x 反序列化漏洞
tp6 反序列化漏洞复现 环境 tp6.0 apache php7.3 漏洞分析 反序列化漏洞需要存在 unserialize() 作为触发条件,修改入口文件 app/controller/Index ...
- 找回了当年一篇V4L2 linux 摄像头驱动的博客
从csdn找回 , 无缘无故被封了..当时损失不少啊!!!!!!!!! linux 摄像头驱动 :核心数据结构: /** * struct fimc_dev - abstraction ...
- tcpack--3快速确认模式- ack状态发送&清除
ACK发送状态的转换图 ACK的发送状态清除 当成功发送ACK时,会删除延迟确认定时器,同时清零ACK的发送状态标志icsk->icsk_ack.pending ACK发送事件主要做了:更新快速 ...
- Java开发环境搭建(若jdk8按默认安装后没有jre文件夹,卸载重装时选择完整安装)
JDK下载与安装(JDK 8是主流,新版版就是增加了一些新特性) 卸载旧JDK 删除java的安装目录 删除JAVA_HOME 删除path下关于java的目录 在cmd命令行中输入java vers ...
- 四:Redis五大数据类型
Redis的五大数据类型 1.string(字符串) string是Redis最基本的类型,你可以理解成与menmcached一模一样的类型,一个key对应一个value string类型是二进制安全 ...