目录
Spring + SpringMVC + SpringBoot 常用注解总结
Spring家族的注解太多了,刚学习时简直都吐了;现在回过头再看时,只关注一些常用的注解,感觉好多了;接下来就总结一下Spring家族中常用的注解!
负责声明Bean的注解(实例化),常见的包括四个:
①@Component注解:平常使用;
②@Controller注解:一般控制器上使用;可以与@ResponseBody注解形成一个复合注解@RestController,表示控制方法的返回值以数据的形式显示到浏览器上;
③@Service注解:一般service类上使用;
④@Repositorys注解:一般dao类上使用;这个注解现在很少使用了,因为现在使用Mybatis框架,Dao对象是Mybatis通过代理对象生成的。
①实际上通过源码分析可以知道@Controller、@Service、@Repository这三个注解都是@Component注解的别名。也就是说:这四个注解的功能都一样,用哪个都可以!提供那么多种方式只是为了增强程序的可读性!
②并且这四个注解一般和组件扫描@ComponentScan注解联合使用!
更详细的介绍参考:SpringIoC注解式开发第四小节:【Spring6】| Spring IoC注解式开发_@每天都要敲代码的博客-CSDN博客
@Component、@Controller 、@Service 、@Repository这四个注解是用来声明Bean的,声明后这些Bean将被实例化。接下来我们看一下,如何给Bean的属性赋值,给Bean属性赋值需要用到这些注解:@Value、@Autowired、@Qualifier、@Resource。
(1)当属性的类型是简单类型时,可以使用@Value注解进行注入。
(2)Autowired注解可以用来注入非简单类型。被翻译为:自动连线的,或者自动装配。
①单独使用@Autowired注解,默认根据类型装配。【默认是根据byType】可以放在属性上面,也可以放在构造方法的上面;推荐放在构造方法的上面。
②@Autowired注解和@Qualifier注解联合使用,才能根据名字装配【根据byName】
注:当带参数的构造方法只有一个,@Autowired注解可以省略!
(3)@Resource注解也可以完成非简单类型注入
①@Resource注解是JDK扩展包中的,也就是说属于JDK的一部分;
②@Autowired注解是Spring框架自己的;
③@Resource注解默认根据名称装配byName;未指定name时,使用属性名作为name;
通过name找不到的话会自动启动通过类型byType装配。@Autowired注解默认根据类型装配byType,如果想根据名称装配,需要配合@Qualifier注解一起用。
更详细的介绍参考:SpringIoC注解式开发第五小节:【Spring6】| Spring IoC注解式开发_@每天都要敲代码的博客-CSDN博客
①@Configuration注解 : 放在类的上面,表示这是个配置类,相当于xml配置文件;
②@Bean注解:放在方法的上面, 把方法的返回值对象,注入到spring容器中;
③@ImportResource注解 : 加载其他的xml配置文件, 把文件中的对象注入到spring容器中;
④@PropertySource注解 : 读取其他的xxx.properties属性配置文件;
⑤@ResponseBody注解: 放在方法的上面,表示方法的返回值是数据, 不是视图;
⑥@ControllerAdvice注解: 控制器增强, 放在类的上面, 表示此类提供了方法,可以对controller增强功能;
⑦@ExceptionHandler注解: 处理异常的,放在方法的上面;
⑧@Transcational注解 : 处理事务的, 放在service实现类的public方法上面, 表示此方法有事务;
①@RequestMapping注解:定义处理器对于请求的映射规则,此注解就是来映射服务器访问的路径;该注解可以注解在方法上,也可以注解在类上,意义是不同的。@RequestMapping的value 属性用于定义所匹配请求的 URI,以“/”开始。
②@PathVariable注解:仅限于超链接或地址栏提交数据,它是一杠一值(前端传数据)、一杠一大括号(后端接收数据),使用注解@PathVariable(路径变量)来解析。
①@SpringBootApplication 注解: 放在启动类上面, 表明这是一个SpringBoot项目;这个注解是一个复合注解:由@SpringBootConfiguration注解(本质上就是@Configuration注解)、@ComponentScan注解(组件扫描)、@EnableAutoConfiguration注解(复合注解)组成。
② @EnableAutoConfiguration注解由@AutoConfigurationPackage注解和@Import注解组成!其中@AutoConfigurationPackage注解就是把某个类及其子包下的所有内容批量注入到容器;这也就解释了在启动类的包或者子包下的类都会被自动注入容器中去!@Import注解:SpringBoot一启动,就给容器加载这127个配置类(这127个配置类实际上是在配置文件写死的);虽然127个场景的所有自动配置启动的时候默认全部加载,但是具体生效还是没生效,需要按需开启!
①@Mapper注解 : 放在类的上面 , 让MyBatis找到接口, 创建他的代理对象。
②@MapperScan注解 :放在主类的上面 , 指定扫描的包, 把这个包中的所有接口都创建代理对象;并把对象注入到容器中。
③@Param注解 : 放在dao接口的方法的形参前面, 作为命名参数使用的。
①@DubboService注解: 在提供者端使用的,暴露服务的, 放在接口的实现类上面。
②@DubboReference注解: 在消费者端使用的, 引用远程服务, 放在属性上面使用。
③@EnableDubbo注解: 放在主类上面, 表示当前引用启用Dubbo功能。
总结:当然还有很多注解没有列出来,这些都是我最近经常用到的,后期大复习的时候再回来进行补充!