点击登录,精彩内容等着你

@ServletComponentScan组件扫描标识注解

全栈侠客

2022-10-09
@ServletComponentScan常常在主应用程序入口启动类中,发现该注解身影,她的作用可大了:开启组件注解扫描功能+标识在那里扫描

一、springboot中的注解的理解

注解所在的位置,无非有几个:类,方法与属性上,由于位置的限定,注定不会很长
归纳本人对注解的理解:


  • 注解更多的作用是做一个坐标标识,表明我在那里..
  • 注解名称:标识我是属于哪个角色,从而区分不同的功能..
  • 注解属性:作为注解的一些特定的属性,标识我这个角色有哪些子范围,对角色的分工进行进一步的配置

只要理解上面关于注解的原理,你就能很客观认识注解是用来干嘛的

二、@ServletComponentScan

官方对该注解的理解是:

Enables scanning for Servlet components ({@link WebFilter filters}, {@link WebServlet
servlets}, and {@link WebListener listeners}). Scanning is only performed when using an
embedded web server.

1.那么容易理解其作用:

  1. 标识开启扫描Servlet组件的功能,这些组件无非就是通过其他注解标识的类:如WebFilter,WebListener等
  2. 必须是在web服务器内才生效,例如tomcat
  3. 查看源码,有注解属性:basePackages与value等,这个就是对注解的角色功能进行进一步的配置
    • backPackages:无非定义扫描的包路径,支持多个数组形式,

2. 作用于启动类中

启动类中,具有注解@SpringBootApplication,标识为整个项目工程的启动类,@ServletComponentScan一般紧跟其后。

3.扫描包名配置

(1)默认不进行配置,例如:

  1. package com;
  2. @SpringBootApplication
  3. @ServletComponentScan
  4. public class VMainApp extends SpringBootServletInitializer {
  5. }

代码中,特意加上这个:package com;
在启动类中,如果@ServletComponentScan不指定特定的包,那么默认将是启动类所在的包,如上面的程序,就扫描com.包下所有类


(2)设定特定的包路径

  1. package com;
  2. @SpringBootApplication
  3. @ServletComponentScan({"com.leanboot","com.leanboot2"})
  4. public class VMainApp extends SpringBootServletInitializer {
  5. }

将扫描设定的包路径

阅读 2639     最后编辑 2022-10-09 16:27
文章补充
评论(0) 发表新评论
  • ...暂无评论...

我是有底线的 评论与点赞5分钟更新一次
回复评论
取消关闭

请先登录