springBoot属性注入的三种常用方式

注意:
SpringBoot是默认识别application.properties和application.yml文件的。
如果在application配置文件写信息:

jdbc.username=root
jdbc.password=123456

不需要写@PropertySource("classpath:jdbc.properties")注解,如果自己定义jdbc.properties里面写上这些信息:需要写上@PropertySource("classpath:jdbc.properties")
使用@PropertySource注解加载自定义的配置文件,但该注解无法加载yml配置文件。然后可以使用@Value注解获得文件中的参数值
方式一: @Value

@PropertySource("classpath:jdbc.properties")  //是否要加取决于在哪里写的
@Data
@Component
public class JDBC {
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;
}

方式二: @ConfigurationProperties

@PropertySource("classpath:jdbc.properties")  //也是否要加取决于在哪里写的
@ConfigurationProperties(prefix="jdbc")
@Data
@Component
public class JDBC {
    private String username;
    private String password;
}

方式三:Environment

@RestController
public class WebController { 
  @Autowired
  private Environment env; 
    
  @RequestMapping("/index")  
  public String index(){ 
    return "方式二:"+env.getProperty("jdbc.username"); 
  } 
}

这种方式好像只能获取放在application里面的信息,对于自定义文件的只能用方式一和二

总结:
对于方式一和二,必须要加上 @component 注解,然后使用的时候用@Autowire注入后才能取得值,直接new 的方式是获取不到的!
推荐第二种方式!简洁优雅!

你可能感兴趣的:(SpringBoot)