配置
-
yml
jdbc: driverClassName: com.mysql.jdbc.Driver; url: jdbc:mysql://127.0.0.1:3306/demo username: root password:
-
方式一
-
配置属性的类,注意
@ConfigurationProperties(prefix = "jdbc")
注解内prefix
指明配置文件内属性前缀。package com.example.demo; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties(prefix = "jdbc") @Data public class JdbcProperties { private String driverClassName; private String url; private String username; private String password; }
-
注入配置
package com.example.demo; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.alibaba.druid.pool.DruidDataSource; @Configuration @EnableConfigurationProperties(JdbcProperties.class) public class JdbcConfigration { @Bean public DruidDataSource dataSource(JdbcProperties proper){ DruidDataSource dataSource=new DruidDataSource(); dataSource.setDriverClassName(proper.getDriverClassName()); dataSource.setUrl(proper.getUrl()); dataSource.setUsername(proper.getUsername()); dataSource.setPassword(proper.getPassword()); return dataSource; } }
-
-
方式二
直接写配置类
package com.example.demo; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.alibaba.druid.pool.DruidDataSource; @Configuration public class JdbcConfigration { @Bean @ConfigurationProperties(prefix = "jdbc") public DruidDataSource dataSource(){ return new DruidDataSource(); } }
方式一比较灵活,如果单纯配置数据源可以直接使用方式二。
自动配置
了解SpringBootApplication
点进@SpringBootApplication
注解,可以看到如下:
-
SpringBootConfiguration
注解点进去可以看到这是一个配置类。
-
EnableAutoConfiguration
注解可以看到上面这样一段话,会发现其试图基于你的classpath and what beans you have defined尝试配置。
-
ComponentScan
注解[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dftV7iil-1611496813713)(C:\Users\kimshell\AppData\Roaming\Typora\typora-user-images\image-20210124160010990.png)]
和以前的xml配置扫描包作用类似,如果没有指定,默认从声明了注解的类所在的包开始扫描。即
@SpringBootApplication
注解的SpringBootApplication启动类所在的包。
总结
SpringBoot为了我们提供了默认配置,而默认配置生效的条件有两个:
- 引入了相关依赖
- 没有配置相关bean
自定义配置:
- 通过自定义application,properties文件进行覆盖,虽然使用的还是默认配置,但是配置中的值改成了自定义的。