当前位置: 首页 > news >正文

【第9章】SpringBoot中Bean的扫描和注册

文章目录

  • 前言
  • 一、bean扫描
    • 1. @SpringBootApplication
    • 2. @ComponentScan
  • 二、bean注册
    • 1.应用bean注册
    • 2.外部bean注册
      • 2.1 @Bean
      • 2.2 @Import
    • 3.bean注册条件
      • 3.1 @ConditionalOnProperty
      • 3.2 @ConditionalOnMissingBean
      • 3.3 @ConditionalOnBean
  • 总结


前言

注册bean对象相关内容。


一、bean扫描

1. @SpringBootApplication

springboot应用程序会扫描启动类同级及子目录下的java文件。

2. @ComponentScan

@Configuration
@ComponentScan(basePackages = "org.example.spring")
public class SpringBootConfig {}

二、bean注册

1.应用bean注册

在springboot应用中我们通常通过注解的形式完成bean对象的注册

注解描述
@Component被标识的类被spring容器管理
@Controller控制层注解,@Component衍生类
@Service服务层注解,@Component衍生类
@Repository持久层注解,@Component衍生类

2.外部bean注册

将jar包中的类交由spring容器管理

2.1 @Bean

@Configuration
public class DruidConfig {@Bean@ConfigurationProperties("spring.datasource.druid")public DataSource dataSource(){return new DruidDataSource();}
}

2.2 @Import

@MapperScan("org.example.springboot3.mybatis.mappers")
@RestController
@SpringBootApplication
@Import(DruidConfig.class)
public class SpringBoot3Application {private static final Logger log = LoggerFactory.getLogger(SpringBoot3Application.class);public static void main(String[] args) {ConfigurableApplicationContext run = SpringApplication.run(SpringBoot3Application.class, args);String appName = run.getEnvironment().getProperty("spring.application.name");log.info("{}启动完成",appName);}@RequestMapping("/")String home() {return "Hello SpringBoot!";}
}

3.bean注册条件

3.1 @ConditionalOnProperty

@Bean
@ConfigurationProperties("spring.datasource.druid")
@ConditionalOnProperty(prefix = "spring.datasource.druid",value = {"driver-class-name","url","username","password"})
public DataSource dataSource(){return new DruidDataSource();
}

3.2 @ConditionalOnMissingBean

@Bean
@ConfigurationProperties("spring.datasource.druid")
@ConditionalOnProperty(prefix = "spring.datasource.druid",value = {"driver-class-name","url","username","password"})
@ConditionalOnMissingBean(DataSource.class)
public DataSource dataSource(){return new DruidDataSource();
}

3.3 @ConditionalOnBean

@Bean
@ConfigurationProperties("spring.datasource.druid")
@ConditionalOnProperty(prefix = "spring.datasource.druid",value = {"driver-class-name","url","username","password"})
@ConditionalOnMissingBean(DataSource.class)
@ConditionalOnBean(com.mysql.cj.jdbc.Driver.class)
public DataSource dataSource(){return new DruidDataSource();
}

总结

回到顶部

相关文章:

  • 【UE5:CesiumForUnreal】——加载无高度地形数据
  • JavaScript 基础 - 对象
  • 算法训练营第四十八天 | 卡码网57 爬楼梯、LeetCode 322 零钱兑换、LeetCode 279 完全平方数
  • 《雅思口语真经总纲1.0》笔记——第二章:官方评分标准真经——Fluency Coherence 流利度和连贯性(1、连贯性)
  • 深度学习知识与心得
  • 使用反射调用Android隐藏API
  • 算法简单笔记4
  • [FreeRTOS 基础知识] 栈
  • 【源码】多语言H5聊天室/thinkphp多国语言即时通讯/H5聊天室源码/在线聊天/全开源
  • 【vscode免密连接云服务器】
  • PHP 操作日期各种转换,常见日期转换,涉及聊天时间转换、涉及日周月年转换、涉及到图表日期转换
  • 【TB作品】MSP430F5529单片机,温控小风扇,DS18B20温度读取,PWM风扇
  • 【Git】在错误分支上开发了怎么办
  • WIFI 万[néng]钥匙 v5.0.10/v4.9.80 SVIP版!
  • 直播分享|深入解析ts-morph:通过注释生成类型文档
  • 2017-08-04 前端日报
  • CSS相对定位
  • ES6核心特性
  • fetch 从初识到应用
  • k8s如何管理Pod
  • Mocha测试初探
  • PHP 7 修改了什么呢 -- 2
  • 分布式熔断降级平台aegis
  • 看域名解析域名安全对SEO的影响
  • 理清楚Vue的结构
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 设计模式走一遍---观察者模式
  • 源码安装memcached和php memcache扩展
  • 栈实现走出迷宫(C++)
  • 字符串匹配基础上
  • ‌Excel VBA进行间比法设计
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1)(1.13) SiK无线电高级配置(六)
  • (done) 声音信号处理基础知识(2) (重点知识:pitch)(Sound Waveforms)
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (ZT)出版业改革:该死的死,该生的生
  • (阿里云万网)-域名注册购买实名流程
  • (备份) esp32 GPIO
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (转)Unity3DUnity3D在android下调试
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .htaccess配置常用技巧
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .Net mvc总结
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .Net Winform开发笔记(一)
  • .NET 通过系统影子账户实现权限维持
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题