使用技巧-Spring的@Value注解

使用技巧-Spring的@Value注解使用@Value+${}获取properties或yml中的值并赋值给某个变量(string和基本类型)//直接将wangpeng赋值给name

大家好,欢迎来到IT知识分享网。使用技巧-Spring的@Value注解"

使用@Value+${}获取properties或yml中的值并赋值给某个变量(string和基本类型)

//直接将wangpeng赋值给name,如果属性类型不是string,或者无法转换,则会报错
@Value("wangpeng")
private String name;
//string占位符语法规则,作为将name作为key,去properties文件中寻找name=value的value值,如果找不到,则使用冒号后面的值作为默认值,如果没有默认值,直接将${name}作为普通字符串赋值给name属性
@Value("${name:wangpeng}")
private String name;
//基本类型及包装类(这里没有例举全)
@Value("${a:1}")
private byte a;
@Value("${b:100}")
private short b;
@Value("${e:5.2}")
private float e;
@Value("${g:false}")
private boolean g;
@Value("${h:h}")
private char h;
@Value("${a1:1}")
private Byte a1;
@Value("${b1:100}")
private Short b1;
@Value("${c1:3000}")
private Integer c1;

使用@Value+${}获取properties或yml中的值并赋值给某个变量(数组)

//默认值是逗号分隔
@Value("${array:1,2,3,4}")
private int[] array;

使用@Value+${}赋值给某个静态变量

//这样直接写是不能获取到配置中的值的
@Value("${name}")

private static String userName;
//可以给指定的静态变量写一个set方法
@Service
public class UserService {

    private static String userName;

    @Value("${name}")
    public void setUserName(String userName) {
        UserService.userName = userName;
    }

    public String test() {
        return userName;
    }
}

使用@Value+#{}SpEL表达式切割字符串

@Value("#{'${list}'.split(',')}")
private List list;
//对应的配置
list=10,11,12,13
//给List或者Set设置默认值空
@Value("#{'${set:}'.empty ? null : '${set:}'.split(',')}")
private Set set;
//对应的配置
set=10,11,12,13

使用@Value+#{}SpEL表达式获取bean

//作为EL表达式解析,将jdbcConfigTemplate当作beanName去容器中寻找,找到则进行注入,找不到则报错
@Value("#{jdbcConfigTemplate}")
private JdbcTemplate jdbcConfigTemplate;

使用@Value+#{}SpEL表达式获取变量

@Service
public class RoleService {
    public static final int DEFAULT_AGE = 18;
    public int id = 1000;

    public String getRoleName() {
        return "管理员";
    }

    public static int getParentId() {
        return 2000;
    }
}
@Service
public class UserService {

    @Value("#{roleService.DEFAULT_AGE}")
    private int myAge;

    @Value("#{roleService.id}")
    private int id;

    @Value("#{roleService.getRoleName()}")
    private String myRoleName;

    @Value("#{roleService.getParentId()}")
    private String myParentId;
}  

使用@Value+#{}获取静态类的值

@Value("#{T(java.lang.Math).random()}")
private double randomValue;

使用@Value+#{}进行逻辑运算

//拼接字符串
@Value("#{roleService.roleName + '' + roleService.DEFAULT_AGE}")
private String value;
//逻辑判断
@Value("#{roleService.DEFAULT_AGE > 16 and roleService.roleName.equals('苏三')}")
private String operation;
//三元运算符
@Value("#{roleService.DEFAULT_AGE > 16 ? roleService.roleName: '苏三' }")
private String realRoleName;

使用@value注解写在自定义注解上,方便管理

@Value("${spring.port}")
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface ServletPort {
}

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/54454.html

(0)
上一篇 2024-05-01 09:26
下一篇 2024-05-05 18:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信