import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* 获取spring容器,以访问容器中定义的其他bean
*/
@Component
public class SpringContextUtil implements ApplicationContextAware {
// Spring应用上下文环境
@Autowired
private ApplicationContext applicationContext;
@Value("${group.avgline}")
public String group;
/**
* 实现ApplicationContextAware接口的回调方法,设置上下文环境
*
* @param applicationContext
*/
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
/**
* @return ApplicationContext
*/
public ApplicationContext getApplicationContext() {
return this.applicationContext;
}
/**
* 获取对象 这里重写了bean方法,起主要作用
*
* @param name
* @return Object 一个以所给名字注册的bean的实例
* @throws BeansException
*/
public Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
}
<!--调用实例-->
package com.qishi.commons.service.zuixinIncrement.impl;
import java.lang.reflect.Method;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.ReflectionUtils;
import com.qishi.commons.service.zuixinIncrement.ZuixinIncrementInterface;
import com.qishi.commons.utils.SpringContextUtil;
@Service
public class AvglineIncrementZuixinService implements ZuixinIncrementInterface{
@Autowired
private SpringContextUtil springContextUtil;
@Override
public Date getIncrementTradeDate() throws Exception {
Method mh =ReflectionUtils.findMethod(springContextUtil.getApplicationContext().getBean(springContextUtil.group).getClass(),"getIncrementTradeDate");
Date date = (Date)ReflectionUtils.invokeMethod(mh,springContextUtil.getApplicationContext().getBean(springContextUtil.group));
return date;
}
@Override
public boolean isZuixinIncrementHasNull() throws Exception {
Method mh =ReflectionUtils.findMethod(springContextUtil.getApplicationContext().getBean(springContextUtil.group).getClass(),"isZuixinIncrementHasNull");
boolean isnull = (boolean)ReflectionUtils.invokeMethod(mh,springContextUtil.getApplicationContext().getBean(springContextUtil.group));
return isnull;
}
@Override
public boolean isZuixinIncrementStatisticHasTrouble() throws Exception {
Method mh =ReflectionUtils.findMethod(springContextUtil.getApplicationContext().getBean(springContextUtil.group).getClass(),"isZuixinIncrementStatisticHasTrouble");
boolean isTrouble = (boolean)ReflectionUtils.invokeMethod(mh,springContextUtil.getApplicationContext().getBean(springContextUtil.group));
return isTrouble;
}
}