SpringBoot连接池
https://www.cnblogs.com/756623607-zhang/p/9453394.html
1. 基本目录结构及使用
创建一个springboot工程
在项目中引入springMVC相关依赖
目录结构
mvnw是什么:https://www.cnblogs.com/easonjim/p/7620085.html
个人开发一些文件可以去掉。
入口类已自动创建好,可直接运行。
加个controller测试下效果。
@RestController
public class TestController {
@GetMapping("hello")
public String hello(){
return "hello, spring boot!";
}
}
启动成功,访问http://localhost:8080/hello,可看到输出。
1.1 如果不用Spring Initializr
https://docs.spring.io/springboot/docs/2.2.7.RELEASE/reference/html/getting-started.html#getting-started
正常spring创建工程,在pom中添加依赖
指定boot版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
添加SpringWeb起步依赖,不写版本号是因为parent中已指定。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
创建入口类,boot会扫描当前包及子包,所以最好在外层包内。
@SpringBootApplication
public class MydemoApplication {
public static void main(String[] args) {
SpringApplication.run(MydemoApplication.class, args);
}
}
Resource下创建application.properties的配置文件
2.java配置,以数据库连接池为例
mysql8
- 一般配置流程:
- 创建jdbc.properties
- 创建JdbcConfig类
@Configuration :声明一个类作为配置类,代替xml文件
@Bean :声明在方法上,将方法的返回值加入Bean容器,代替 标签
@Value :属性注入
@PropertySource :指定外部属性文件,
pom中添加
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
JdbcConfig类
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
@Value("${jdbc.url}")
String url;
@Value("${jdbc.driver}")
String driverClassName;
@Value("${jdbc.username}")
String username;
@Value("${jdbc.password}")
String password;
@Value("${jdbc.initialSize}")
int initialSize;
@Value("${jdbc.maxActive}")
int maxActive;
@Bean
public DruidDataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setInitialSize(initialSize);
dataSource.setMaxActive(maxActive);
return dataSource;
}
}
jdbc.properties配置文件
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=root
jdbc.initialSize=1
jdbc.maxActive=5
修改TestController测试
@RestController
public class TestController {
@Autowired
private DruidDataSource dataSource;
@GetMapping("hello")
public String hello(){
System.out.println("dataSource = " + dataSource);
return "hello, spring boot!";
}
}
我的成功运行。
2.1 Spring Boot的属性注入
默认的配置文件名必须是:application.properties或application.yml
properties和yml的格式有点不同,注意
-
把jdbc.properties改为application.properties
-
新建配置类
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
private String url;
private String driver;
private String username;
private String password;
private int initialSize;
private int maxActive;
//还有get,set等方法省略了,注意加上
}
- 修改JdbcConfig
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
@Bean
public DruidDataSource dataSource(JdbcProperties jdbc) {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(jdbc.getUrl());
dataSource.setDriverClassName(jdbc.getDriver());
dataSource.setUsername(jdbc.getUsername());
dataSource.setPassword(jdbc.getPassword());
dataSource.setInitialSize(jdbc.getInitialSize());
dataSource.setMaxActive(jdbc.getMaxActive());
return dataSource;
}
}
更优雅的注入
场景:一段属性只有一个Bean需要使用
只需JdbcConfig ,和application.properties即可
- application.properties
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=root
jdbc.initialSize=1
jdbc.maxActive=5
- JdbcConfig
@Configuration
public class JdbcConfig {
@Bean
// 声明要注入的属性前缀,Spring Boot会自动把相关属性通过set方法注入到DataSource中
@ConfigurationProperties(prefix = "jdbc")
public DruidDataSource dataSource() {
return new DruidDataSource();
}
}