SpringBoot---Bean对象的管理

本文详细介绍了SpringBoot中Bean的管理,包括Bean的扫描——SpringBoot通过@SpringBootApplication注解自动扫描启动类所在包及子包,Bean的注册——使用@Component及其衍生注解或@Bean、@Import注解,以及Bean的注册条件——如@ConditionalOnMissingBean等。内容涵盖Bean注入Ioc容器的多种方式,并通过实例展示了配置类的组织和扫描。
摘要由CSDN通过智能技术生成

(一)Bean扫描

在使用Spring的时候,我们要做到Bean扫描,一般是两种方式,一种是用标签规定扫描的包路径,一种是利用注解来规定扫描的包路径。

标签:

<context:component-scan base-package="com.hsh"/>

注解:

@ComponentScan(basePackages="com.hsh")

而在SpringBoot中,我们发现没有以上两种方式,那它如何实现Bean扫描呢?

我们可以发现,在SpringBoot的启动类中,有一个SpringBootApplication注解,这个注解是一个组合注解,意思就是它是一组注解的集合,而其中有一个ComponentScan注解就是专门进行包扫描的也就是Bean扫描,只不过它没有规定扫描的范围,因此,它默认会扫描该注解所在的类的包或者子包。(也就是默认扫描启动类所在的包及其子包)

如果将启动类所在的包中的controller拖到外面,则boot工程就不能扫描到controller

在这种情况下,如何让boot工程扫描到controller呢,咱们可以在启动类中手动添加ComponentScan注解:

package com.example.app01;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan(basePackages = "com.example")
@SpringBootApplication
public class App01Application {
    public static void main(String[] args) {
        SpringApplication.run(App01Application.class, args);
    }
}

得到结果如下:

(二)Bean注册

众所周知,SpringBoot可以自动的扫描启动类所在的包及其子包,通过扫描注解将相对应的Bean对象注入到Ioc容器中,早在Spring中就有对Bean注册的解释,常用于Bean对象的注解有以下几种:

注解 说明 位置
@Component 声明bean的基础注解 不属于以下三类时,用此注解
@Controller @Component的衍生注解 标注在控制器类上
@Service @Component的衍生注解 标注在业务类上
@Repository @Component的衍生注解 标注在数据访问类上(由于与mubatis整合,用的少)

有一个问题,目前这些注解都是针对于当前自定义的bean对象,然后通过注解注入到Ioc容器中,

如果出现了第三方的bean对象,那如何将他们注入到Ioc容器中呢?还是否可以使用以上那些注解

将第三方的bean对象注入到Ioc容器中呢?

说明:通过亲手操作一下可以得到,当我们给第三方bean对象添加注解的时候,他们不能修改只是可读的,因此想要通过给这些第三方bean对象添加注解的方式注入显然不可能了,它是无法使用@Component及衍生注解声明bean的。而为了给第三方bean对象提供服务,SpringBoot提供了两个注解:@Bean和@Import 这两个注解,其中不要把@Bean和bean对象搞混了。

为了让大家更好的理解bean注册,黑马程序员的课程中引入了一个jar包来实现bean的注册, 这个就是:链接:https://pan.baidu.com/s/1EzXEvwe_xNrvHBBDAmf-eg?pwd=u3qr 
提取码:u3qr 

有关bean对象的压缩包我已经放到网盘上了。

它的大致流程就是:

(1)首先将common-pojo-1.0-SNAPSHOT.jar添加到本地maven库中;

(2)然后自己可以创建一个新项目

(3)在pom文件中添加坐标,当然,这个项目中springboot的起步依赖可以不用,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值