1. ApplicationContextHolder 实现类 import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Service; @Service("applicationContextProvider") public class ApplicationContextHolder implements ApplicationContextAware { private static ApplicationContext appContext; /** * * @param ctx * @throws BeansException */ @Override public void setApplicationContext(ApplicationContext ctx) throws BeansException { ApplicationContextHolder.appContext = ctx; } /** * * @return */ public static ApplicationContext getApplicationContext() { return appContext; } }
2. Service 代码片段
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;
Service("arServiceImpl") public class ArServiceImpl { @Autowired private ArdMapper ardMapper; public int getMarketProductCompNum(String keyId){ return ardMapper.getMarketProductCompNum(keyId); } }
3. Spring 通过Java反射动态获取方法 代码片段 ApplicationContext applicationContext = ApplicationContextHolder.getApplicationContext(); Class<?> aClass = applicationContext.getBean("arServiceImpl").getClass(); Method method = aClass.getDeclaredMethod("getMarketProductCompNum", String.class); int num = (Integer) method.invoke(applicationContext.getBean("arServiceImpl"),params.getId());