spring小技巧

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 getBean(Class clazz){
        return getApplicationContext().getBean(clazz);
    }


    //通过name,以及Clazz返回指定的Bean
    public static T getBean(String name,Class 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进行处理

你可能感兴趣的:(java)