You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
webcrawler/core/src/main/java/org/pqh/core/util/SpringUtil.java

64 lines
2.3 KiB

package org.pqh.core.util;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* Created by reborn on 2017/9/19.
*/
@Component
@Lazy(false)
public class SpringUtil implements ApplicationContextAware,LogManger {
private static ApplicationContext applicationContext;
public static <T>T getBean(Class<T> c){
return applicationContext.getBean(c);
}
public static <T>T getBean(String beanName){
return (T) applicationContext.getBean(beanName);
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
log.info("init applicationContext");
SpringUtil.applicationContext=applicationContext;
}
/**
*
* @param clazz 注册class
* @param serviceName 注册别名
* @param propertyMap 注入属性
*/
public static void addBean(Class clazz,String serviceName,Map<String,Object> propertyMap){
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz);
if(propertyMap!=null){
for(String key:propertyMap.keySet()){
beanDefinitionBuilder.addPropertyValue(key, propertyMap.get(key));
}
}
registerBean(serviceName, beanDefinitionBuilder.getRawBeanDefinition());
}
/**
* @desc 向spring容器注册bean
* @param beanName
* @param beanDefinition
*/
private static void registerBean(String beanName, BeanDefinition beanDefinition) {
ConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) applicationContext;
BeanDefinitionRegistry beanDefinitonRegistry = (BeanDefinitionRegistry) configurableApplicationContext
.getBeanFactory();
beanDefinitonRegistry.registerBeanDefinition(beanName, beanDefinition);
}
}