1.自动注入配置文件中的属性;
@Component
@PropertySource("classpath:ordercreate.properties")
@ConfigurationProperties(prefix="query")
@PropertySource:指定读取文件
@ConfigurationProperties:指定读取特定前缀的值,prefix 设定的就是前缀名称。
例:query.promotion_url=http://xxxxx
2.手动获取springBean
@Component
public class SpringBeanUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Resource
ConsulDiscoveryProperties consulDiscoveryProperties;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if(SpringBeanUtil.applicationContext == null) {
SpringBeanUtil.applicationContext = applicationContext;
}
}
//获取applicationContext
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
//通过name获取 Bean.
public static Object getBean(String name){
return getApplicationContext().getBean(name);
}
//通过class获取Bean.
public static <T> T getBean(Class<T> clazz){
return getApplicationContext().getBean(clazz);
}
//通过name,以及Clazz返回指定的Bean
public static <T> T getBean(String name,Class<T> clazz){
return getApplicationContext().getBean(name, clazz);
}
}
3.关于spring在异步线程中无法通过(AopContext.currentProxy()获取当前bean;
例:ThreadPool.getPool1().execute(new Runnable() {
@Override
public void run() {
((xx)AopContext.currentProxy()).xxx()
}
});
xx:当前类的名称
可以通过上面的手动获取bean,拿到其余的bean进行处理