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

SpringBoot - 通过注解装配Bean的两种方式

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

SpringBoot - 通过注解装配Bean的两种方式

目录
  • 使用@Bean注入容器
    • 默认
    • 指定name
      • 根据类型获取bean
      • 根据name获取bean
  • 使用@ComponentScan扫描注入容器
    • 默认
    • 属性
      • 自定义扫描路径
      • 过滤器
      • 设置依赖延迟注入

使用@Bean注入容器 默认

直接在方法上加@Bean,Bean名称默认为方法名

指定name

允许使用@Bean("xxx")指定name,效果同@Bean(name = "xxx")

对应类型重复的bean:

	@Bean("user")
    public UserDto initUser() {
        UserDto userDto = new UserDto();
        userDto.setId(1L);
        userDto.setUserName("name1");
        userDto.setNote("mua");
        return userDto;
    }

    @Bean("user2")
    public UserDto initUser2() {
        UserDto userDto = new UserDto();
        userDto.setId(2L);
        userDto.setUserName("name2");
        userDto.setNote("mua");
        return userDto;
    }
根据类型获取bean

两个bean类型相同时,根据类型获取bean会报错:
Exception in thread “main” org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘***’ available: expected single matching bean but found 2: xxx,xxx


两个bean能加入工厂,在获取时,由于不知道取具体那个bean,导致报错。

根据name获取bean

根据name能获取到指定的bean

使用@ComponentScan扫描注入容器 默认

默认只能扫描@ComponentScan所在包下的bean

不在同一包下会报错:
Exception in thread “main” org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘***’ available

属性 自定义扫描路径

使用basePackages可以指定扫描哪个路径下的类

过滤器

过滤器分为两种
includeFilters表示加载指定的类
excludeFilters表示不加载指定的类
默认按注解过滤

设置依赖延迟注入

在实际ctx.getBean(JobDto.class)之前,未加载加载。

在执行获取bean语句后,才加载:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/891275.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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