SpringBoot学习笔记(一)-----注释的"派生性-层次性"

Spring 模式注解装配

  • 模式注解是一种用于声明在应用中扮演“组件”角色的注解。如 Spring Framework 中的 @Repository 标注在任何类上
    ,用 于扮演仓储角色的模式注解。
  • @Component 作为一种由 Spring 容器托管的通用模式组件,任何被 @Component 标准的组件均为组件扫描的候选对象。类
    似地,凡是被 @Component 元标注(meta-annotated)的注解,如 @Service
    ,当任何组件标注它时,也被视作组件扫 描的候选对象

注解的派生性

在这里插入图片描述
@Component 注解

在这里插入图片描述
@Repository 注解 继承了 @Component注解 并且 属性方法 保持一致
就可以说 是 @Component派生了 @Repository

@AliasFor(annotation = Component.class)
	String value() default "";

注解层次性

在这里插入图片描述
而自定义的注解又继承了 @Repository注解 并且保持有同样的属性方法
这样 从@Component 注解到 @Repository 下面一层层的 就是 注解的 “层次性” 就像java里面的继承 但在java实际编程语言中 是注释没有派生的 。

在这里插入图片描述

注解的派生性 可以使得 扫描注解时派生自定义派生注解也会变成扫描对象。

//标记后Spring 会把它当成一个bean 扫描进上下文 value 是bean的名字
@FirstLevelRepository(value="myFirstLevelRepository")//bean的名称
public class MyFirstLevelRepository {
}
/**
 * Created by caomaoboy 2019-11-11
 **/
 //启动引导类
@ComponentScan("com.qjx.divinspringboot.repository")
public class RepositoryBootstrap {
    public static void main(String[] args) {
    	//得到Spring上下文的对象
        ConfigurableApplicationContext context = new SpringApplicationBuilder(RepositoryBootstrap.class).web(WebApplicationType.NONE).run(args);
        //从上下文对象中以bean的名字去取 
        MyFirstLevelRepository myFirstLevelRespository =  context.getBean("myFirstLevelRepository",MyFirstLevelRepository.class);
        //查看bean
        System.out.println("myFirstLevelRepository" + myFirstLevelRespository);
        //关闭上下文
        context.close();

    }
}

同时如果用@Component 来 注解bean 效果也是一样的

//标记后Spring 会把它当成一个bean 扫描进上下文 value 是bean的名字
@Component(value="myFirstLevelRepository")//bean的名称
public class MyFirstLevelRepository {
}

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值