@Component、@ComponentScan、@Configuration

1、@ComponentScan

这个是Spring的原生注解,主要用来指明哪些路径下的包要交给spring管理,注册到ioc容器中
在配置文件就相当于:

context:componet-scan属性
<context:componet-scan base-package="com.sff.app" use-default-filters="true">
        <!--不扫描@Controller注解的类-->
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:componet-scan>

我们一般可以这样使用:


@Configuration
@ComponentScan(value = "com.qch.test",
        includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Controller.class)},
        useDefaultFilters = false)
public class AppConfig {
    /*给容器中注册一个bean,类型是方法返回值,id就是方法名称*/
    @Bean
    public Person person() {
        return new Person("Kate", 12);
    }
}

表示像Spring的ico容器中注入一个配置类
因为Springboot中的@SpringBootApplication注解已经封装了这个注解,所以我们一般很少去使用这个注解来指定我们配置文件所在的路径
https://img-blog.csdnimg.cn/img_convert/f7240a481a07f4ba542cf7e1d00bfe63.png#align=left&display=inline&height=234&margin=[object Object]&name=image.png&originHeight=468&originWidth=786&size=71072&status=done&style=none&width=393
换句话说,只要我们按照SpirngBoot的规范,在主启动类下创建包就不需要额外的指定那个包名

2、@Configuration

该注解表示注册一个配置类到ioc容器中,我们还可以使用@Bean注解自定义像ioc中注入的组件
其中@Configuration就相当于我们告诉Springboot这是一个配置文件
使用 <bean></bean 标签来注册自定义组件 ===@Bean

<property></property>表示相关属性
https://img-blog.csdnimg.cn/img_convert/eb3b86d93beae9ccf8890ea34b16888b.png#align=left&display=inline&height=224&margin=[object Object]&name=image.png&originHeight=448&originWidth=1266&size=283394&status=done&style=none&width=633]
)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fZv97XKQ-1620217630429)(https://img-blog.csdnimg.cn/img_convert/976c5581f52a5fd1fca812c5a2b14eab.png#align=left&display=inline&height=193&margin=[object Object]&name=image.png&originHeight=386&originWidth=1308&size=515208&status=done&style=none&width=654]
)
Springboot2中我们还可以通过@Configuration注解的属性来指定是否每一次都从ioc容器中获取注册的组件还是每一次都创建一个新的
https://img-blog.csdnimg.cn/img_convert/163d74f63a79416eb999ecdeb04ae45b.png#align=left&display=inline&height=43&margin=[object Object]&name=image.png&originHeight=43&originWidth=543&size=34326&status=done&style=none&width=543

  • ture 使用代理的示例,从ioc容器中获取,是一个单例
  • false 每一次都创建一个新的对象

3、@Component

这个注解表示将向Spring容器中注册组件,这是Spring原生的注解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQd36TMo-1620217555927)(https://img-blog.csdnimg.cn/img_convert/401c973197273544eebf7e85c1ba474f.png#align=left&display=inline&height=339&margin=[object Object]&name=image.png&originHeight=678&originWidth=975&size=166429&status=done&style=none&width=488]
)
比如上面我们使用的@Configuration也封装了这个注解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KKyC0sC0-1620217570012)(https://img-blog.csdnimg.cn/img_convert/ae5d07ada5efaea32e15b685b33e3937.png#align=left&display=inline&height=273&margin=[object Object]&name=image.png&originHeight=364&originWidth=718&size=48581&status=done&style=none&width=539]
)
还有我们的@controller@service中也封装了这个注解
在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值