首页 > 代码库 > 005运行时值注入
005运行时值注入
01、属性占位符(Property placeholder)
@Configuration @PropertySource("classpath:/com/soundsystem/app.properties") public class ExpressiveConfig { @Autowired Environment env; @Bean public BlankDisc disc(){ return new BlaknDisc(env.getProperty("disc.title"), env.getProperty("disc.artist")) } }
02、Spring的Environment
String getProperty(String key)---->给定key的属性未定义,返回null String getProperty(String key, String defaultValue)---->当给定key的属性不存在,则返回defaultvalue T getProperty(String key, Class<T> type)---->获取字符串转成Class<T>实例 T getProperty(String key, Class<T> type, T defaultValue) String getRequiredProperty(String key)---->不存在,则抛IllegalStateException异常 Boolean containsProperty(String key)---->判断给定key的属性是否存在 T getPropertyAsClass(String key, Class<T> type) String [] getActiveProfiles() String [] getDefaultProfiles() boolean acceptsProfiles(String ...profiles)
03、占位符@Value注解(和@Autowired类似)
@Bean public static PropertySourcesPlaceholderConfigurer placeholderConfigurer(){ return new PropertySourcesPlaceholderConfigurer();//配置使能 }
public BlankDisc(@Value("${disc.title}") String title, @Value("${disc.artist}")){//使用@Value this.title = title; this.artist = artist; }
04、Spring表达式语言(SpEL)
1、使用方式与属性占位符类似 public BlankDisc(@Value("#{systemProperties[‘disc.title‘]}" String title, @Value("#{systemProperties[‘disc.artist‘]}"))){ this.title = title; this.artist = artist; } 2、字面值 #{1} #{3.14159265} #{9.86E4} #{‘Hello‘} #{false} 3、引用bean、属性、方法 #{beanID} #{beanID.field} #{beanID.methodName()} 4、使用类型 #{T(java.lang.Math)} #{T(java.lang.Math).PI} #{T(java.lang.Math).random()} 5、运算符 算数运算 + - * / % ^ 比较运算 < > == <= >= lt gt eq le ge 逻辑运算 and or not | 条件运算 logic ? trueResult : falseResult expression ?: ‘null result‘ 正则表达式 matches 6、条件运算&正则表达式 #{admin.email matches ‘[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.com‘} #{scoreboard.score > 1000 ? "Winner!" : "Loser"} #{disc.title ?: ‘Default Result‘}---->为null,则返回默认值 7、集合 #{jukebox.songs[4].title} #{jukebox.songs[T(java.lang.Math).random() * jukebox.songs.size()].title} #{‘This is a test‘[3]} #{jukebox.songs.?[artist eq ‘Aerosmith‘]}---->查询歌曲中,作家为Aerosmith的歌曲,得到一个集合 #{jukebox.songs.^[artist eq ‘Aerosmith‘]}---->查询第一个作家为Aerosmith的歌曲 #{jukebox.songs.$[artist eq ‘Aerosmith‘]}---->查询最后一个作家为Aerosmith的歌曲 #{jukebox.songs.![title]}---->投影,取出songs集合中的title组成集合 #{jukebox.songs.?[artist eq ‘Aerosmith‘].![title]}---->查询作者为Aerosmith的歌曲,取title组成新集合
005运行时值注入
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。