美文网首页
坚持打卡学习第22天——注解

坚持打卡学习第22天——注解

作者: 去追星星 | 来源:发表于2022-01-07 19:41 被阅读0次
类似功能,注册bean

@Repository:将数据访问层的类标识为Spring Bean
@Component:仅表示一个bean,作用任何地方
@Service:一般作用在业务层
@Controller:一般作用在控制层

@Autowired与@Resource

@Resource作用相当于@Autowired
不同点:
(1) 提供方不同
(2)注入方式不同:

  • @Autowired只按照byType 注入
  • @Resource默认按byName自动注入,也提供按照byType 注入
@ComponentScan
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented

//在一个类中可重复定义
@Repeatable(ComponentScans.class)
public @interface ComponentScan {

//定义扫描的包
    @AliasFor("basePackages")
    String[] value() default {};
//定义扫描的包
    @AliasFor("value")
    String[] basePackages() default {};
//定义扫描的类
    Class<?>[] basePackageClasses() default {};
//Bean name生成器
    Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;
//作用域解析器
    Class<? extends ScopeMetadataResolver> scopeResolver() default AnnotationScopeMetadataResolver.class;
//作用域代理模式
    ScopedProxyMode scopedProxy() default ScopedProxyMode.DEFAULT;
//资源匹配模式
    String resourcePattern() default "**/*.class";
//是否用默认过滤器
    boolean useDefaultFilters() default true;
//满足过滤的条件时扫描
    ComponentScan.Filter[] includeFilters() default {};
//不满足过滤的条件时扫描
    ComponentScan.Filter[] excludeFilters() default {};
//是否延迟初始化
    boolean lazyInit() default false;
//定义过滤器
    @Retention(RetentionPolicy.RUNTIME)
    @Target({})
    public @interface Filter {
//过滤器类型,可以按注解或正则形式等过滤
        FilterType type() default FilterType.ANNOTATION;

//定义过滤器的类
        @AliasFor("classes")
        Class<?>[] value() default {};
//定义过滤器的类
        @AliasFor("value")
        Class<?>[] classes() default {};
//匹配方式
        String[] pattern() default {};
    }
}

注:@SpringBootApplication等同于:@Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置

  • @EnableAutoConfiguration:SpringBoot自动配置(auto-configuration):尝试根据你添加的jar依赖自动配置你的Spring应用
  • @Configuration:配置,标注启动类
    一般启动类标注@SpringBootApplication注解,项目启动,会扫描启动类所在包及子包,因此启动类一般在项目最外层

示例

@ComponentScan("com.example.demo.dao")
@ComponentScan(basePackages = {"com.example.demo.dao"})
@ComponentScan(basePackages = { "com.example" }, excludeFilters = {
        @Filter(type = FilterType.REGEX, pattern = { "com.example.framework.core.XXX" }) })
@Scope
  • @Scope("prototype"):多实例,IOC容器启动创建的时候,不会创建对象,需要从容器中获取时,就会创建。
  • @Scope("singleton"):单实例,IOC容器启动的时候就会调用方法创建对象,以后每次获取都是从容器当中拿同一个对象。
  • @Scope("request"):同一个请求创建一个实例
  • @Scope("session"):同一个session创建一个实例
    。。。。。。

相关文章

  • 坚持打卡学习第22天——注解

    类似功能,注册bean @Repository:将数据访问层的类标识为Spring Bean@Component:...

  • 学习笔记-《高效能人士的7个习惯》-不断更新

    [学习打卡]:骁凡 [打卡日期]:2018/11/19 [累计坚持]:这是我坚持学习的第193天☀️ [学习内容]...

  • 学习笔记-时间成本

    [学习打卡]:骁凡 [打卡日期]:2018/11/20 [累计坚持]:这是我坚持学习的第194天☀️ [学习内容]...

  • 学习笔记-同理心

    [学习打卡]:骁凡 [打卡日期]:2018/11/28 [累计坚持]:这是我坚持学习的第200天☀️ [学习内容]...

  • 学习笔记-认知台阶

    [学习打卡]:骁凡 [打卡日期]:2018/11/30 [累计坚持]:这是我坚持学习的第202天☀️ [学习内容]...

  • 学习笔记-番茄工作法

    [学习打卡]:骁凡 [打卡日期]:2018/11/22 [累计坚持]:这是我坚持学习的第196天☀️ [学习内容]...

  • 学习笔记-定位调整偏见

    [学习打卡]:骁凡 [打卡日期]:2018/11/26 [累计坚持]:这是我坚持学习的第199天☀️ [学习内容]...

  • 学习笔记-情感账户

    [学习打卡]:骁凡 [打卡日期]:2018/11/29 [累计坚持]:这是我坚持学习的第201天☀️ [学习内容]...

  • 学习笔记-画面感

    [学习打卡]:骁凡 [打卡日期]:2018/12/03 [累计坚持]:这是我坚持学习的第203天☀️ [学习内容]...

  • 学习笔记—时间颗粒度

    [学习打卡]:骁凡 [打卡日期]:2018/11/23 [累计坚持]:这是我坚持学习的第197天☀️ [学习内容]...

网友评论

      本文标题:坚持打卡学习第22天——注解

      本文链接:https://www.haomeiwen.com/subject/ibajcrtx.html