|
@ -0,0 +1,132 @@
|
|
|
package com.yihu.jw.util.spring;
|
|
|
|
|
|
import org.springframework.beans.BeansException;
|
|
|
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
|
|
|
import org.springframework.context.ApplicationContext;
|
|
|
import org.springframework.context.ApplicationContextAware;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.util.ClassUtils;
|
|
|
|
|
|
/**
|
|
|
* Spring上下文管理器。
|
|
|
*
|
|
|
* @author Sand
|
|
|
* @version 1.0
|
|
|
* @created 12-05-2015 17:47:55
|
|
|
*/
|
|
|
@Component
|
|
|
public class SpringContext implements ApplicationContextAware {
|
|
|
private static ApplicationContext springContext = null;
|
|
|
|
|
|
/**
|
|
|
* 获取Spring应用上下文环境。
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
public static ApplicationContext getApplicationContext() {
|
|
|
return springContext;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
|
|
springContext = applicationContext;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取服务。
|
|
|
*
|
|
|
* @param serviceName
|
|
|
* @param <T>
|
|
|
* @return
|
|
|
*/
|
|
|
public static <T> T getService(String serviceName) {
|
|
|
return (T) springContext.getBean(serviceName);
|
|
|
}
|
|
|
|
|
|
public static <T> T getService(Class<T> beanCls) {
|
|
|
return (T) springContext.getBean(beanCls);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取服务,并用参数初始化对象。
|
|
|
*
|
|
|
* @param serviceName
|
|
|
* @param args
|
|
|
* @param <T>
|
|
|
* @return
|
|
|
*/
|
|
|
public static <T> T getService(String serviceName, Object... args) {
|
|
|
T ref = (T)springContext.getBean(serviceName, args);
|
|
|
if (ref == null) return null;
|
|
|
|
|
|
return ref;
|
|
|
}
|
|
|
|
|
|
public static <T> T getService(Class<T> beanCls, Object... args){
|
|
|
T ref = (T)springContext.getBean(beanCls, args);
|
|
|
if (ref == null) return null;
|
|
|
|
|
|
return ref;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取平台支持的所有服务名称。
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
public static String[] getAvailableServiceNames() {
|
|
|
String[] serviceNames = springContext.getBeanDefinitionNames();
|
|
|
|
|
|
return serviceNames;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 判断是否支持特定服务。
|
|
|
*
|
|
|
* @param serviceName
|
|
|
* @return
|
|
|
*/
|
|
|
public static boolean isServiceSupported(String serviceName) {
|
|
|
return springContext.containsBeanDefinition(serviceName);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取服务的实现类。
|
|
|
*
|
|
|
* @param serviceName
|
|
|
* @return
|
|
|
*/
|
|
|
public static Class getServiceType(String serviceName) {
|
|
|
return springContext.getType(serviceName);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 判断服务是否为单例模式。
|
|
|
*
|
|
|
* @param serviceName
|
|
|
* @return
|
|
|
*/
|
|
|
public static boolean isSingleton(String serviceName) {
|
|
|
return springContext.isSingleton(serviceName);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 手动装配Bean
|
|
|
* @param bean
|
|
|
*/
|
|
|
public static void autowiredBean(Object bean) {
|
|
|
autowiredBean(bean, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 指定模式,手动装配Bean
|
|
|
* @param bean
|
|
|
* @param autowireMode
|
|
|
*/
|
|
|
public static void autowiredBean(Object bean, int autowireMode) {
|
|
|
String beanName = ClassUtils.getUserClass(bean).getName();
|
|
|
AutowireCapableBeanFactory factory = springContext.getAutowireCapableBeanFactory();
|
|
|
factory.autowireBeanProperties(bean, autowireMode, false);
|
|
|
factory.initializeBean(bean, beanName);
|
|
|
}
|
|
|
}
|