springboot三种常见的属性注入方式
第一种:@Component+@Value注解的形式来进行属性注入
首先都需要在application.properties文件写入配置信息
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root
第一种方法太多简单,这里就不在具体阐述
第二种:使用@ConfigurationProperties+Set方式注入:
1.编写一个JdbcProperties.java类
注意这里用到的@Data是 lombok.Data下的(如果没有需要在pom文件引用lombok依赖),@Data注解就是@Getter和@Setter等注解的组合,他可以自动生成get、set、hashcode、toString、构造,在编译的时候就产生,而不是在运行的时候才会声称这些方法。
package com.blj.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.List;
@Data
@ConfigurationProperties(prefix = "jdbc")//方法2:
public class JdbcProperties {
private String driverClassName;
private String url;
private String username;
private String password;
}
2.编写配置类
需要在pom文件中引入druid连接池依赖
package com.blj.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import javax.sql.DataSource;
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)//方法2:
public class jdbcConfig {
//方法2:
@Bean
public DataSource dataSource(JdbcProperties jdbcProperties){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
dataSource.setUrl(jdbcProperties.getUrl());
dataSource.setUsername(jdbcProperties.getUsername());
dataSource.setPassword(jdbcProperties.getPassword());
return dataSource;
}
}
3.测试
@Autowired
private DataSource dataSource;
@RequestMapping("/hello")
public String hello(){
// log.debug("hello method is running!");
return "hello springboot!";
}
在return这里打断点,我们可以看到,说明注入成功
第三种:是第二种方式的改进版
这种方式下将不再用到(JdbcProperties)类,直接通过@ConfigurationProperties(prefix = “jdbc”)注解去找到.properties或.yml文件中的属性后再注入
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource(){
return new DruidDataSource();
}
这种方式就是把@ConfigurationProperties(prefix=“jdbc”)注解写在@Bean下,当springboot启动解析的时候,会找到@Configuration注解,然后找到@Bean注解,然后找到@ConfigurationProperties(prefix=“jdbc”)注解,直接解析yml文件,这样写的好处就是减少了代码量,个人更喜欢这一中注入方式。