由一次关于注解是什么开始引发的提问

一、问题之初

问:Java,Spring之类的东西到底有多少注解,每个注解是干嘛用的?

答:框架基础——全面解析Java注解

该博客主要讲解了:

1)Java中常见的注解:

第一种,JDK自带注解:@Override;@Deprecated;@Suppvisewarnings

第二种,第三方注解:spring中的@Autowired;@Service;@Repository;Mybatis中的@InsertProvider;@UpdateProvider;@Options

2)注解的分类

第一种,按运行机制(注解存在于程序的那个阶段)将注解分为三类:源码注解(只在源码存在)、编译注解(在class文件中也存在)、运行时注解(在运行阶段仍然起作用)

第二种,按照来源来分的话,有如下三类:
1:JDK自带的注解(Java目前只内置了三种标准注解:@Override、@Deprecated、@SuppressWarnings,以及四种元注解:@Target、@Retention、@Documented、@Inherited)
2:第三方的注解——这一类注解是我们接触最多和作用最大的一类
3:自定义注解——也可以看作是我们编写的注解,其他的都是他人编写注解

第三种,按照功能来分的,还有,元注解——注解的注解。

3)自定义注解(这部分直接看原文吧)

4)注解的项目实战(这部分直接看原文吧)

5)注解总结

问:这篇博客主要简单说了一下Java中的注解,可我想知道Spring中的众多注解(虽然我没见过没用过几个)

答:第一篇:Spring常用注解介绍【经典总结】

通过粗略的对文章的扫射,我了解到如下情况:

1.我见过的几个常见注解

  @Component :标注一个普通的spring Bean类。

  @Repository:标注一个DAO组件类

  @Service:标注一个业务逻辑组件类

  @Controller:标注一个控制器组件类。

然后,他们四个实质上属于同一类注解,用法相同,功能相同,区别在于标识组件的类型。@Component可以代替@Repository、@Service、@Controller,因为这三个注解是被@Component标注的。上代码:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
    String value() default "";
}

2.关于我一直弄不懂的@Resource和@Autowired,文章是这样说的:

1)相同点:@Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上,用于为类的属性、构造器、方法进行注值。

2)不同点:提供方不同;注入方式不同;属性。其中注入方式不同是说@Autowired只按照byType 注入;@Resource默认按byName自动注入,也提供按照byType 注入;

具体可参考:Spring中 @Autowired注解与@Resource注解的区别

然而,我只看到这里就看不下去了,因为,之后的我都看不懂。于是我搜索了下一篇博客。

spring注解大全与详解    我可以截个图示意一下,全篇表格,适合忘记时查看,但并不适合入门和理解。

继续搜到另一篇:Spring中注解的使用详解   可以说讲解很详细,耐心看下去会懂不少,可我就是喜欢开小差,我突然想到一个问题。

问:spring的 context:component-scan与context:annotation-config都啥意思?我记得老师带我在配置文件里配置过,可有时候会把其中一个删掉,Why?

答:spring context:component-scan与context:annotation-config的区别

总结很明了,如下:

< context:annotation-config/>注册了常用的BeanPostProcessor,而这些BeanPostProcessor 就是让常用注解(@Autowired@required@Configuration@Component)生效。

<context:component-scan/> 做了< context:annotation-config/>所有做的事,除此之外,还扫描注册base-package下的类。

综上所述,两者只能留其一。

另外还有一篇,比较短:Spring配置项<context:annotation-config>的解释说明

之后我的疑问又增加了

问:base-package是什么东西?为啥要扫描它?

答:spring中注解注入 context:component-scan 的使用说明   (详细的可自行观看原文)

context.component-scan节点

base-package属性告诉spring要扫描的包 
use-default-filters=”false”表示不要使用默认的过滤器,此处的默认过滤器,会扫描包含Service,Component,Responsitory,Controller注释修饰类。

赠送一篇base-package详解

问:Spring配置文件到处都是,可是里面的每一行都有啥含义,为啥要配啊?

答:找到一篇好博客:Spring基础学习教程(Spring配置文件详解)-03  ,上几张图就有感觉了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值