栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

11.注册Spring Bean(Spring Bean基础)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

11.注册Spring Bean(Spring Bean基础)

文章目录
  • 一、BeanDefinition注册
    • 1.XML配置元信息
    • 2.Java注解配置元信息
      • @Bean
      • @Component及其派生
      • @import
    • 3.Java API配置元信息
      • 3.1.命名方式:BeanDefinitionRegistry#registerBeanDefinition(String,BeanDefinition)
      • 3.2.非命名方式:BeanDefinitionReaderUtils#registerWithGeneratedName(AbstractBeanDefinition,BeanDefinitionRegistry)
      • 3.3.配置类方式:AnnotatedBeanDefinitionReader#register(Class...)
  • 二、外部单例对象注册
    • Java API配置元信息 SingletonBeanRegistry#registerSingleton

一、BeanDefinition注册 1.XML配置元信息

2.Java注解配置元信息 @Bean
		@Bean(name = {"user", "xiaomage-user"})// 多个别名
        public User user() {
            User user = new User();
            user.setId(1L);
            user.setName("小马哥");
            return user;
        }
@Component及其派生 @import
@import(AnnotationBeanDefinitionDemo.Config.class)
3.Java API配置元信息 3.1.命名方式:BeanDefinitionRegistry#registerBeanDefinition(String,BeanDefinition)
	public static void main(String[] args) {
        // 创建 BeanFactory 容器
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
        // 通过 BeanDefinition 注册 API 实现
        // 1.命名 Bean 的注册方式
        registerUserBeanDefinition(applicationContext, "mercyblitz-user");
        // 启动 Spring 应用上下文
        applicationContext.refresh();
        // 按照类型依赖查找
        System.out.println("User 类型的所有 Beans" + applicationContext.getBeansOfType(User.class));
        // 显示地关闭 Spring 应用上下文
        applicationContext.close();
    }
    
	public static void registerUserBeanDefinition(BeanDefinitionRegistry registry, String beanName) {
        BeanDefinitionBuilder beanDefinitionBuilder = genericBeanDefinition(User.class);
        beanDefinitionBuilder
                .addPropertyValue("id", 1L)
                .addPropertyValue("name", "小马哥");
        registry.registerBeanDefinition(beanName, beanDefinitionBuilder.getBeanDefinition());
    }
3.2.非命名方式:BeanDefinitionReaderUtils#registerWithGeneratedName(AbstractBeanDefinition,BeanDefinitionRegistry)
	public static void main(String[] args) {
        // 创建 BeanFactory 容器
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
        // 通过 BeanDefinition 注册 API 实现
        // 2. 非命名 Bean 的注册方法
        registerUserBeanDefinition(applicationContext);
        // 启动 Spring 应用上下文
        applicationContext.refresh();
        // 按照类型依赖查找
        System.out.println("User 类型的所有 Beans" + applicationContext.getBeansOfType(User.class));
        // 显示地关闭 Spring 应用上下文
        applicationContext.close();
    }
    
	public static void registerUserBeanDefinition(BeanDefinitionRegistry registry) {
        BeanDefinitionBuilder beanDefinitionBuilder = genericBeanDefinition(User.class);
        beanDefinitionBuilder
                .addPropertyValue("id", 1L)
                .addPropertyValue("name", "小马哥");
        // 非命名 Bean 注册方法
        BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinitionBuilder.getBeanDefinition(), registry);
    }
3.3.配置类方式:AnnotatedBeanDefinitionReader#register(Class…)
	public static void registerByAnnotatedBeanDefinitionReader(BeanDefinitionRegistry registry) {
        AnnotatedBeanDefinitionReader annotatedBeanDefinitionReader = new AnnotatedBeanDefinitionReader(registry);
        annotatedBeanDefinitionReader.register(User.class);
    }
二、外部单例对象注册 Java API配置元信息 SingletonBeanRegistry#registerSingleton
		// 创建 BeanFactory 容器
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
        // 创建一个外部 User 对象
        User user = new User();
        SingletonBeanRegistry singletonBeanRegistry = applicationContext.getBeanFactory();
        // 注册外部单例对象
        singletonBeanRegistry.registerSingleton("user", user);
        // 启动 Spring 应用上下文
        applicationContext.refresh();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/346248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号