1、DefaultListableBeanFactory.registerBeanDefinition
此函数可动态向容器注册BeanDefinition。
如下代码:
classpath:spring-context.xml 中配置:
<bean id="userDao" class="com.wzy.springstudy.UserDao"/>
向spring容器中注册bean BeanDefinition 以及获取bean实例代码:
@Test
public void testApplicationContext111(){
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("classpath:spring-context.xml");
DefaultListableBeanFactory beanFactory =
(DefaultListableBeanFactory)context.getBeanFactory();
BeanDefinitionBuilder definitionBuilder =
BeanDefinitionBuilder.genericBeanDefinition(UserService.class);
definitionBuilder.addPropertyReference("userDao","userDao");
beanFactory.registerBeanDefinition("userService",definitionBuilder.getRawBeanDefinition());
UserService bean = context.getBean(UserService.class);
System.out.println(bean);
}
2、DefaultListableBeanFactory.registerSingleton
此函数可动态向容器注册Singleton 的bean 实例。
如下代码:
classpath:spring-context.xml 中:
<bean id="userDao" class="com.wzy.springstudy..UserDao"/>
向spring容器中注册单实例bean
@Test
public void testApplicationContext111(){
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("classpath:spring-context.xml");
DefaultListableBeanFactory beanFactory =
(DefaultListableBeanFactory)context.getBeanFactory();
UserDao userDao = beanFactory.getBean(UserDao.class);
UserService userService = new UserService();
userService.setUserDao(userDao);
beanFactory.registerSingleton("userService", userService);
UserService bean = context.getBean(UserService.class);
System.out.println(bean);
}
spring基本使用(4)-Code的方式动态添加BeanDefition以及bean实例到Spring容器当中
最新推荐文章于 2024-04-30 18:37:09 发布