首页 > 其他分享 >spring-创建 bean 的几种姿势

spring-创建 bean 的几种姿势

时间:2022-12-17 14:55:48浏览次数:62  
标签:姿势 spring void class ImportDemo bean BeanDefinitionRegistryPostProcessor public

  • 使用 @Bean 注解

  • 使用 @Component 注解。@Service 和 @Repository,等都是 @Component 的继承

  • 使用 xml,不推荐

  • 使用 @import 注解,可以导入一个普通类作为 bean,或者导入被 @Configuration 注解的配置类,或者 ImportSelector, ImportBeanDefinitionRegistrar 的实现。

  • 实现 BeanFactoryAware 方法

  • 创建 BeanDefinitionRegistryPostProcessor 的实现的实现类,并实现 postProcessBeanDefinitionRegistry 方法

    @Import 普通类

    public class ImportDemo {
    
        public void say() {
            System.out.println("this is a @import demo class ");
        }
    }
    
    @Configuration
    @Import(ImportDemo.class)
    public class AppConfig {
    }
    
    public class Main {
    
        public static void main(String[] args) {
            AnnotationConfigApplicationContext context =
                    new AnnotationConfigApplicationContext(AppConfig.class);
            ImportDemo bean = context.getBean(ImportDemo.class);
            bean.say();
        }
    }
    

    @Import 配置类

    参考:http://events.jianshu.io/p/899013ac1d9a

    创建 BeanDefinitionRegistryPostProcessor bean 实例

    @Configuration
    public class AppConfig {
    
        @Bean
        public BeanDefinitionRegistryPostProcessor people() {
            return new BeanDefinitionRegistryPostProcessor() {
    
                @Override
                public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
    
                }
    
                @Override
                public void postProcessBeanDefinitionRegistry(@NonNull BeanDefinitionRegistry registry) throws BeansException {
                    BeanDefinitionBuilder beanBuilder = BeanDefinitionBuilder.genericBeanDefinition(People.class, People::new);
                    registry.registerBeanDefinition("people", beanBuilder.getBeanDefinition());
                }
            };
        }
    
    }
    

标签:姿势,spring,void,class,ImportDemo,bean,BeanDefinitionRegistryPostProcessor,public
From: https://www.cnblogs.com/mojiruo/p/16988976.html

相关文章

  • MVC、三层架构、数据库连接池、Spring JDBC
    MVC模式MVC全名是ModelViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻......
  • Error creating bean with name 'com.xyz.store.StoreApplicationTests':
    org.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatingbeanwithname'com.xyz.store.StoreApplicationTests':Unsatisfieddependencye......
  • SpringBoot启动流程
    1.简述Springboot启动是通过Application启动类实现@SpringBootApplication(exclude={MongoAutoConfiguration.class,MongoDataAutoConfiguration.class},......
  • org.springframework.beans.factory
    FactoryBean......
  • 关于spring---上次忘记保存
    首先是关于ioc里面配置类(xml)的方法这个是在pom.xml里面    这个需要创建一个spring的专属文件在res里面    di使用方法  增加set方法  配置关......
  • 【SpringBoot】Spring Data Redis封装和Spring Cache
    一、参考资料​​RedisUtil:最全的Java操作Redis的工具类,使用StringRedisTemplate实现,封装了对Redis五种基本类型的各种操作!​​​​SpringCache-简书​​​​redis分布......
  • 【SpringBoot】封装自定义的starter
    一、参考资料​​SpringBoot封装自己的Starter-码农教程​​​​[Gradle]发布构件到本地仓库​​​​Gradle插件之maven-publish:发布androidlibrary到maven仓库-知乎......
  • 【Spring】Spring IOC的原理
    一、参考资料 ​​为什么要有SpringIoc-简书​​​​【狂神说Java】Spring5最新完整教程IDEA版通俗易懂_哔哩哔哩_bilibili​​ ​​SpringFramework中文文档-Core......
  • SpringBoot2.x 优秀开源项目
    前后端分离vue开源项目:项目名开源地址eladmin-web​​https://gitee.com/elunez/eladmin-web​​eladmin​​https://gitee.com/elunez/eladmin​​RuoYi-Vue​​https://gi......
  • 阿里云服务器部署springboot项目
    一、安装jdk​​安装jdk​​二、安装mysql下载安装包:​​​rpm-ivhhttp://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm​​设置开机自启动:​​​yum......