SpringBoot入门学习(六) ~~ 参数绑定

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaozhegaa/article/details/82912396

目录

 

SpringBoot中的参数绑定

一、@ConfigurationProperties

二、@Value

三、命令行方式——配置参数

四、@ConfigurationProperties 总结~~支持松绑定


SpringBoot中的参数绑定

SpringBoot的特点就是将配置文件中的配置信息自动注入到自动生成的类中,这样就可以省很多功夫了。那么这里有一个疑问?SpringBoot是如何准确的定位到这个配置信息,将配置内容注入到类中。我们又可不可以自己去自定义呢!下面这个注解将会解答你的所有疑问。

  • 一、@ConfigurationProperties

这个注解可以非常方便的把资源文件中的内容绑定到对象上。

  • 入门小小案例:

1、引入lombok依赖,这个依赖是专门用来生成get跟set方法的,你也可以手动生成。

<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
</dependency>

2、编写一个简单的实体,代码如下:

@Component
@Setter@Getter@ToString

  public class MyDruidDataSource {

  

   private String username;

   private String password;

   private String url;

   private String driverClassName;

}

3、在配置文件中,写入以下的配置:

db.username=xiaozheng

  db.password=123456

  db.url=jdbc:mysql:///crm

  db.driver_class_name=com.mysql.jdbc.Driver

4、在一个简单控制器,去输出MyDruidDataSource

@Controller

  public class DataSource {

   @Autowired

   private MyDruidDataSource myDruidDataSource;

   @RequestMapping("/dataSource")

   @ResponseBody

   public String dataSource(){

      System.out.println(myDruidDataSource.toString());

      return "hello dataSource";

   }

}

5、编写启动类,启动项目,访问dataSource后效果图如下:

说明当前的类并没有与配置信息有任何的绑定。

6、需要引入@ConfigurationProperties

@Component

@Setter@Getter@ToString

@ConfigurationProperties("db")

  public class MyDruidDataSource {

  

   private String username;

   private String password;

   private String url;

   private String driverClassName;

}

7、启动,再次访问就可以了。

 

  • 方法上+@ConfigurationProperties

【描述:】上面的案例,是我们自己编写的类,我们可以在类上加入@ConfigurationProperties去注入参数。但如果说是第三方的类,而我们又想去自定义它的参数呢!可以在方法上加该注解

参考代码:

       假如:MyDruidDataSource是第三方类,我们可用以下方式注入:

@Bean

@ConfigurationProperties(prefix = "db")

  public MyDruidDataSource myDruidDataSource(){

   return new MyDruidDataSource();

}

 

  • 二、@Value

这里呢!它是根据配置文件中db.xx的名字去找类的相同成员变量名,然后将内容注入到类变量中。

那么,如果说,类成员变量跟配置文件的属性名字不一致的话,该怎么办呢?

这时候可以使用@value注解

//将配置文件中,username1的属性注入到username,这个注解就解决了属性跟类变量不一致的问题
@Value("username1")

  private String username;

  @Value("password1")

  private String password;
  • 三、命令行方式——配置参数

使用——开头的参数都可以被SpringBoot视为参数,允许参数的绑定。

 

或者通过java –jar 项目 –db.username=xiaozheng –db.password=123456….方式也可以

  • 四、@ConfigurationProperties 总结~~支持松绑定

允许匹配方式:

db.userName = 类成员userName

db.user_name = 类成员userName

db.user-name = 类成员userName

db_user_name = 类成员userName

为什么支持松绑定?

因为参数绑定来源有很多,例如系统变量,我们习惯配置

JAVA_HOME、MAVEN_HOME用下划线风格,支持这种类型的绑定。

 

 

猜你喜欢

转载自blog.csdn.net/xiaozhegaa/article/details/82912396