在Spring3.0開始,Spring官方就已經開始推薦使用java配置來代替傳統的xml配置了。
一、java配置常用註解
java配置主要靠java類和一些註解來達到和xml配置一樣的效果,比較常用的註解有:
- @Configuration:聲明一個類作爲配置類,代替xml文件
- @Bean:聲明在方法上,將方法的返回值加入Bean容器,代替標籤
- @Value:屬性注入
- @PropertySource:指定外部屬性文件。
二、我們接下來用java配置來嘗試實現連接池配置
1、引入依賴
首先在pom.xml中,引入Druid連接池依賴:
<dependency>
<groupId>com.github.drtrang</groupId>
<artifactId>druid-spring-boot2-starter</artifactId>
<version>1.1.10</version>
</dependency>
2、添加jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/leyou
jdbc.username=root
jdbc.password=123
3、配置數據源
創建JdbcConfiguration類:
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfiguration {
@Value("${jdbc.url}")
String url;
@Value("${jdbc.driverClassName}")
String driverClassName;
@Value("${jdbc.username}")
String username;
@Value("${jdbc.password}")
String password;
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(url);
dataSource.setDriverClassName(driverClassName);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
解讀:
- @Configuration:聲明JdbcConfiguration是一個配置類。
- @PropertySource:指定屬性文件的路徑是:classpath:jdbc.properties
- 通過@Value爲屬性注入值。
- 通過@Bean將 dataSource()方法聲明爲一個註冊Bean的方法,Spring會自動調用該方法,將方法的返回值加入Spring容器中。相當於以前的bean標籤
然後就可以在任意位置通過@Autowired注入DataSource了!
三、測試成功!
我們在HelloController中測試:
@RestController
public class HelloController {
@Autowired
private DataSource dataSource;
@GetMapping("show")
public String test(){
return "hello Spring Boot!";
}
}
在test方法中打一個斷點,然後Debug運行並查看: