@value注解
在我们在一个spring boot中创建了一个Java类(bean)的时候,我们想要在配置文件里面对这个类里的元素进行配置时,我们可以使用@value注解来进行:
当你使用快捷提示时请一定要使用后面时annotation的@Value注解,其他jar包里面的这个注解是不起作用的在这个时候。
这里的@Data注解是属于lombok包里面的,作用是不用写这个类的setters和getters了。
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Date;
@Data
@Component
//@ConfigurationProperties(prefix = "user")
public class User {
@Value("${user.username}")
private String username;
@Value("${user.age}")
private Integer age;
@Value("${user.birthday}")
private Date birthday;
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", age=" + age +
", birthday=" + birthday +
'}';
}
}
在配置文件中(这时用的是.yml形式的配置文件)
user:
username: 原子
age: 19
birthday: 2004/11/14
然后我们在ApplicationTests.java中输入测试代码
import com.liuliang.boot.beans.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class BootApplicationTests {
@Autowired
private User user;
@Test
void contextLoads() {
System.out.println(user.toString());
}
}
此时我们运行这个测试Tests之后在日志里面出现
@ConfigurationProperties
package com.liuliang.boot.beans;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
@Data
@Component
@ConfigurationProperties(prefix = "user")
public class User {
private String username;
private Integer age;
private Date birthday;
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", age=" + age +
", birthday=" + birthday +
'}';
}
}
在配置文件中
user:
username: 三号
age: 99
birthday: 2004/11/14
我们运行这个测试Tests之后在日志里面出现
所以我们可以看出这两种方式的区别,@Value注解相较于@ConfigurationProperties注解的使用来说较为繁琐,我们在开发中一般用@ConfigurationProperties注解,虽然来说一般用这个注解进行开发,但是在某些方面上这两个注解有着不同的优势和劣势,这会在我们之后的学习中学到。