一、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.那么容易理解其作用:
- 标识开启扫描Servlet组件的功能,这些组件无非就是通过其他注解标识的类:如WebFilter,WebListener等
- 必须是在web服务器内才生效,例如tomcat
- 查看源码,有注解属性:basePackages与value等,这个就是对注解的角色功能进行进一步的配置
- backPackages:无非定义扫描的包路径,支持多个数组形式,
2. 作用于启动类中
启动类中,具有注解@SpringBootApplication
,标识为整个项目工程的启动类,@ServletComponentScan一般紧跟其后。
3.扫描包名配置
(1)默认不进行配置,例如:
package com;
@SpringBootApplication
@ServletComponentScan
public class VMainApp extends SpringBootServletInitializer {
}
代码中,特意加上这个:package com;
在启动类中,如果@ServletComponentScan不指定特定的包,那么默认将是启动类所在的包,如上面的程序,就扫描com.包下所有类
(2)设定特定的包路径
package com;
@SpringBootApplication
@ServletComponentScan({"com.leanboot","com.leanboot2"})
public class VMainApp extends SpringBootServletInitializer {
}
将扫描设定的包路径