SpringBoot SpringBoot 原理篇 1 自动配置 1.2 bean 的加载方式【二】

news2025/7/18 5:58:32

SpringBoot

【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

SpringBoot 原理篇

文章目录

      • SpringBoot
      • SpringBoot 原理篇
      • 1 自动配置
        • 1.2 bean 的加载方式【二】
          • 1.2.1 第二种方式

1 自动配置

1.2 bean 的加载方式【二】

1.2.1 第二种方式

上一次我们已经回顾了一下通过xml 配置文件的形式去定义bean

在这里插入图片描述

其他没啥, 就是特别繁琐【能不能简化?】 【答案是肯定的】

于是Spring 就提供了一种实用注解的方式来定义bean

就我们想把哪个类配置成受Spring 管控的bean,在类上面加注解就行了

package com.dingjiaxiong.bean;

import org.springframework.stereotype.Component;

/**
 * ClassName: Cat
 * date: 2022/10/24 10:33
 *
 * @author DingJiaxiong
 */

//这个注解就代表了<bean> 这个标签
@Component("tom")
public class Cat {
}
package com.dingjiaxiong.bean;

import org.springframework.stereotype.Service;

/**
 * ClassName: Mounse
 * date: 2022/10/24 10:33
 *
 * @author DingJiaxiong
 */

@Service("jerry")
public class Mouse {
}

但是这样又有了个新的问题,就这样写就能加载的话,那计算机上这么多类库,岂不是Spring 都要去扫一遍,这样工作量太大

为了降低Spring 的工作强度,还是要配置一下【就你告诉Spring ,去哪儿找】

applicationContext2.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
    ">

    <!--  指定加载bean的位置,component  -->
    <context:component-scan base-package="com.dingjiaxiong.bean"/>

</beans>

来一个新的运行程序

package com.dingjiaxiong.app;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * ClassName: App2
 * date: 2022/10/24 10:43
 *
 * @author DingJiaxiong
 */

public class App2 {

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext2.xml");

        String[] names = ctx.getBeanDefinitionNames();
        for (String name : names) {
            System.out.println(name);
        }

    }

}

直接运行

在这里插入图片描述

可以看到, 东西还有点多

但是tom、jerry 已经加载上了

这就是第二种bean 的加载方式,就是使用组件扫描 + 类上面写注解 来配置

那现在第三方的bean 怎么定义呢?总不能去改人家的源代码加注解吧

是可以做的,先来一个配置类

package com.dingjiaxiong.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

/**
 * ClassName: DbConfig
 * date: 2022/10/24 13:29
 *
 * @author DingJiaxiong
 */

@Component
public class DbConfig {

    @Bean
    public DruidDataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        return ds;
    }

}

修改一下扫描

在这里插入图片描述

再次运行

在这里插入图片描述

可以看到已经上来了,而且dbConfig 也上来了,这倒不奇怪

如果我换个注解

在这里插入图片描述

再次运行

在这里插入图片描述

好家伙,效果没变,这意味着这两个有关系,

在这里插入图片描述

OK,这大致就是使用注解 + 扫描配置 去加载 bean的介绍

回顾一下

XML+注解方式声明bean

在这里插入图片描述

使用@Component及其衍生注解@Controller 、@Service、@Repository定义bean

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/36305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea 项目代码打包为jar包详解

目录前言一、将所有依赖和模块代码打包为一个jar二、只将模块代码打包为一个jar前言 假设我有如下简单 maven 项目 点击 File > Project Structure > Artifacts > 点击加号 > 选择JAR > 选择From modules with dependencies 一、将所有依赖和模块代码打包为一…

【树莓派不吃灰】命令篇⑨ 记录学习文件系统

目录1. 外部存储设备1.1 分区挂载1.2 查看磁盘信息&#xff08;包括未挂载磁盘&#xff09;1.2.1 mmcblk0p01.2.2 sda1&#xff08;额外了解&#xff09;1.3 查看UUID1.4 查看文件系统挂载情况2. 文件系统2.1 索引式文件系统2.1.1 EXT2 文件系统&#xff08;了解&#xff09;2.…

Android 序列化框架 Gson 原理分析,可以优化吗?

本文已收录到 AndroidFamily&#xff0c;技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 提问。 前言 大家好&#xff0c;我是小彭。 Gson 是 Google 推出的 Java Json 解析库&#xff0c;具有接入成本低、使用便捷、功能扩展性良好等优点&#xff0c;想必大家都很熟悉了。…

ES6 入门教程 25 Module 的加载实现 25.4 循环加载

ES6 入门教程 ECMAScript 6 入门 作者&#xff1a;阮一峰 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录ES6 入门教程25 Module 的加载实现25.4 循环加载25.4.1 CommonJS 模块的加载原理25.4.2 CommonJS 模块的循环加载25.4.3 ES6 模块的循环加…

MobPush Android 快速集成

开发工具&#xff1a;Android Studio 集成方式&#xff1a;Gradle在线集成 安卓版本支持&#xff1a;minSdkVersion 19 集成准备 注册账号 使用PushSDK之前&#xff0c;需要先在MobTech官网注册开发者账号&#xff0c;并获取MobTech提供的AppKey和AppSecret&#xff0c;详情可…

Gitblit自建仓库及多人使用

上稿已完成了Git Server部署了&#xff0c;现在开始创建仓库及笔者常用的IDE使用 第一步&#xff1a;SSH密钥生成&#xff0c;并保存到GitBlit 正常Git都会用到的server SSH Keys&#xff0c;这里自建同样少不了 【问题直接在CMD输入命令&#xff0c;直接切菜&#xff0c;笔…

ShardingSphere (一)

ShardingSphere &#xff08;一&#xff09; ShardingSphere-JDBC 与 SpringBoot 集成 ShardingSphere-JDBC 定位为轻量级 Java 框架&#xff0c;在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库&#xff0c;以 jar 包形式提供服务&#xff0c;无需额外部署和依赖…

气人|这种通过率调优技巧居然这么晚才让我知道

量化风控审核过程中的通过率在贷前策略中是一大重要的内容&#xff0c;另外一个是逾期率。二者之间的因果关系就是通过率高低变化决定了逾期率风险的走势&#xff0c;通过率决定了逾期率的结果&#xff0c;而逾期率又对通过率起到了一个制衡的作用。 很多的风险管理人员常常会遇…

前端实现克里金插值分析(一)

作者:yangjunlin 最近不少小伙伴问我怎么搞前端插值分析&#xff0c;我在github上查找了一些资料&#xff0c;目前最常用的方式是webgis框架idw&#xff08;反距离权重算法&#xff09;d3-contour的方式实现&#xff0c;这种方式是比较简单同时基本能满足一般的气象分析&#x…

Netty入门学习

同步&#xff1a;当调用方法的线程和接收结果的线程是同一个&#xff0c;这意味着阻塞&#xff0c;那么是同步。 异步&#xff1a;当调用方法的线程和处理结果的线程不是同一个&#xff0c;这意味着不是阻塞&#xff0c;是异步。 下图是一个简单的Netty的客户端和服务器端 【…

论文阅读笔记 | 三维目标检测——VoxelNet算法

如有错误&#xff0c;恳请指出。 文章目录1.背景2. 网络结构2.1 体素特征表示2.2 卷积特征提取2.3 RPN网络3. 实验结果paper&#xff1a;《VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection》 1.背景 以往的3d检测器都难免利用了手工设计特征(hand-…

ES6 入门教程 29 ArrayBuffer 29.1 ArrayBuffer 对象

ES6 入门教程 ECMAScript 6 入门 作者&#xff1a;阮一峰 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录ES6 入门教程29 ArrayBuffer29.1 ArrayBuffer 对象29.1.1 概述29.1.2 ArrayBuffer.prototype.byteLength29.1.3 ArrayBuffer.prototype.s…

善网ESG周报(第二期)

ESG报告&#xff1a; 聚焦五大战略&#xff0c;信公股份首次披露ESG报告 近日&#xff0c;信公股份发布首份ESG报告&#xff0c;报告主要涵盖可持续发展战略、高效现代的公司治理、可持续的商业模式与创新、传递社会影响力和守护地球家园等几个维度。 能链智电发布ESG报告&a…

SpringBoot——指标监控,自定义指标监控

为什么要进行指标监控&#xff1f; 在微服务架构中多个组件部署以后&#xff0c;我们需要能够监控到每个组件的健康情况&#xff0c;因此SpringBoot抽取了Actuator用于监控组件。 1.Java自带的监控工具&#xff08;不推荐&#xff09; 步骤&#xff1a; winr输入cmd 回车 进…

广告机联物联卡联网的优势?

广告机联物联卡联网的优势&#xff1f; 随着技术的发展、物联网技术的应用、物联网卡的授权&#xff0c;广告模式也在悄然发生变化&#xff0c;从传统的电视、报纸、杂志等广告模式逐渐转变为建筑之间的广告机。最常见的是地铁、公交车等公共区域设置的广告机或广告屏幕。 一…

67. SAP ABAP 监控用户事物码和程序执行的工具介绍

本文咱们不谈 ABAP 代码编写,而是介绍 SAP ABAP 系统里,如果想查找某个用户在某个时间段之内,在系统干了哪些事情,应该具体如何去做,SAP 又是提供了哪些工具来满足这种监控需求。 本文写作动机来源于一位朋友向我发起的咨询: 我们抛开 SAPGUI Script 这个因素不谈,本文…

第七章《Java的异常处理》第2节:异常的分类及处理方法

异常可以分为多种类型,Java语言允许程序员使用不同的方式来处理不同种类的异常,这样可以实现对异常的精细化处理。 7.2.1异常的分类 7.1小节中提到Exception是用来表示异常的类,但Exception并非Java语言中唯一用来表示异常的类,它只是庞大的异常类家族中的一员。下图7-7就…

[附源码]java毕业设计游戏网站设计

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

第八章 动态规划 5 AcWing 1591. 快速排序

第八章 动态规划 5 AcWing 1591. 快速排序 原题链接 AcWing 1591. 快速排序 算法标签 DP 思路 直接枚举a[i]之前所有元素与a[i]之后所有元素 判断 时间复杂度 O(N2)O(1010)O(N^2)O(10^{10})O(N2)O(1010) 超时 a[i]之前所有元素小于a[i] &#xff0c;即小于a[i]之前所有元…

YOLO算法(You Only Look Once)系列讲解与实现(待完善)

文章目录前言一、指标分析1.mAP (mean Average Precision)2.IOU二、YOLO1.YOLO-v1&#xff08;1&#xff09;步骤&#xff08;2&#xff09;网络结构&#xff08;3&#xff09;损失函数&#xff08;4&#xff09;存在问题2.YOLO-v2&#xff08;1&#xff09;新的尝试-Better&am…