67,550
社区成员




ApplicationContext app= new ClassPathXmlApplicationContext("...........xml");
MsgMap map = new MsgMap();
map.put("no1",1);
addBean("com.test.bean.TestBean1", "test1",map, app);
/**
*
* @param className 注册class 全称
* @param serviceName 注册别名
* @param propertyMap 注入属性
* @param app application上下文
*/
private static void addBean(String className,String serviceName,MsgMap propertyMap, ApplicationContext app){
try {
Class<?> clazz = Thread.currentThread().getContextClassLoader().loadClass(className);
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz);
if(propertyMap!=null){
Iterator<?> entries = propertyMap.entrySet().iterator();
Map.Entry<?, ?> entry;
while (entries.hasNext()) {
entry = (Map.Entry<?, ?>) entries.next();
String key = (String) entry.getKey();
Object val = entry.getValue();
beanDefinitionBuilder.addPropertyValue(key, val);
}
}
registerBean(serviceName, beanDefinitionBuilder.getRawBeanDefinition(), app);
} catch (ClassNotFoundException e) {
System.out.println(className+",主动注册失败.");
}
}
/**
* @desc 向spring容器注册bean
* @param beanName
* @param beanDefinition
*/
private static void registerBean(String beanName, BeanDefinition beanDefinition,ApplicationContext context) {
ConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) context;
BeanDefinitionRegistry beanDefinitonRegistry = (BeanDefinitionRegistry) configurableApplicationContext
.getBeanFactory();
beanDefinitonRegistry.registerBeanDefinition(beanName, beanDefinition);
}
public class TestServices {
public String test(String in){
return "input String is:"+in;
}
}
@Controller
public class TestServices {
@RequestMapping("/t")
public String test(String in){
return "input String is:"+in;
}
}