美文网首页
坚持打卡学习第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天——注解

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