02.Spring boot java代码方式配置
目标:可以使用@Value获取配置文件配置项并结合@Bean注册组件到Spring
分析:
需求:使用Java代码配置数据库连接池,并可以在处理器中注入并使用
在入门案例中,我们没有任何的配置,就可以实现一个SpringMVC的项目了,快速、高效! 但是如果没有任何的xml,那么我们如果要配置一个Bean该怎么办?
1. Spring配置历史
- 事实上,在Spring3.0开始,Spring官方就已经开始推荐使用java配置来代替传统的xml配置了,我们不妨来回顾一下 Spring的历史:
Spring1.0时代 在此时因为jdk1.5刚刚出来,注解开发并未盛行,因此一切Spring配置都是xml格式,想象一下所有的bean都用 xml配置,细思极恐啊,心疼那个时候的程序员2秒
Spring2.0时代 Spring引入了注解开发,但是因为并不完善,因此并未完全替代xml,此时的程序员往往是把xml与注解进行结 合,貌似我们之前都是这种方式。
Spring3.0及以后 3.0以后Spring的注解已经非常完善了,因此Spring推荐大家使用完全的java配置来代替以前的xml,不过似乎 在国内并未推广盛行。然后当Spring Boot来临,人们才慢慢认识到java配置的优雅。
有句古话说的好:拥抱变化,拥抱未来。所以我们也应该顺应时代潮流,做时尚的弄潮儿,一起来学习下java配置的 玩法。
2.使用java配置实现步骤:
java配置主要靠java类和一些注解,比较常用的注解有:
- @Configuration :声明一个类作为配置类,代替xml文件
- @Bean :声明在方法上,将方法的返回值加入Bean容器,代替 标签
- @Value :属性注入
- @PropertySource :指定外部属性文件。
我们接下来用java配置来尝试实现连接池配置:
2.1. 添加依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
2.2. 创建数据库:
使用数据操作工具创建数据库 springboot_test
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191229221802768.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ3MzYwODI=,size_16,color_FFFFFF,t_70
2.3. 创建数据库连接参数的配置文件jdbc.properties:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/springboot_test
jdbc.username=root
jdbc.password=root
2.4. 创建配置类:
package com.piziwang.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import javax.sql.DataSource;
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
@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.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
2.5. 改造处理器类注入数据源并使用:
在 HelloController 中注入DataSource进行测试,改造代码如下:
@RestController
public class HelloController {
@Autowired
private DataSource dataSource;
@GetMapping("hello")
public String hello(){
System.out.println("datasource="+dataSource);
return "hello .Spring boot with dataSource is"+dataSource;
}
}
小结:
- @Configuration :声明一个类作为配置类,代替xml文件
- @Bean :声明在方法上,将方法的返回值加入Bean容器,代替 标签
- @Value :属性注入
- @PropertySource :指定外部属性文件。