@SpringBootApplication注解的scanBasePackages属性值里面的****,***,**和*的区别
时间: 2023-11-22 20:05:22 浏览: 78
`@SpringBootApplication` 注解的 `scanBasePackages` 属性用于指定需要扫描的包路径,其中 `****`、`***`、`**` 和 `*` 都是通配符,用于匹配不同的包路径。
- `****` 匹配任意层级的包路径,例如 `com.example.****` 可以匹配到 `com.example`、`com.example.demo`、`com.example.demo.controller` 等多个层级的包路径。
- `***` 匹配任意单层的包路径,例如 `com.example.***` 可以匹配到 `com.example`、`com.example.demo` 等单层的包路径。
- `**` 匹配任意多层的包路径,例如 `com.example.**` 可以匹配到 `com.example`、`com.example.demo`、`com.example.demo.controller` 等多个层级的包路径。
- `*` 匹配任意单层的包路径,例如 `com.example.*` 可以匹配到 `com.example.demo`、`com.example.controller` 等单层的包路径。
相关问题
@SpringBootApplication注解
`@SpringBootApplication` 是 Spring Boot 框架中的一个便利注解,它集合了多个核心功能的注解,用于简化基于 Spring 和 Spring MVC 的项目配置。当你在 Java 类上使用这个注解时,它会:
1. **@SpringBootConfiguration**: 标记该类为一个配置类,继承了 `ConfigurableComponentScan` 和 `WebMvcConfigurerAdapter`,这意味着它会自动扫描并应用配置,同时集成 Web MVC 功能。
2. **@EnableAutoConfiguration**: 开启了 Spring Boot 的自动配置功能,它会尝试分析你的项目依赖和类路径来自动配置尽可能多的组件,比如数据源、JPA 或者 RESTful API。
3. **@ComponentScan**: 指定组件扫描范围,让 Spring 找到并管理所有标记为 `@Component`、`@Repository`、`@Service` 和 `@Controller` 的类。
4. **@Import**: 如果你需要手动添加额外的配置类,可以直接导入它们,这样就不必一个个单独声明。
通过 `@SpringBootApplication`,你可以在一个类中集中配置你的应用,减少了大量的 XML 配置文件,使得 Spring Boot 的项目创建更加简洁高效。
@SpringBootApplication(scanBasePackages = {"com.cmcc.coc.biz.opportunity", "com.cmcc.coc.ummp.common.common"}) @EnableAspectJAutoProxy(proxyTargetClass = true) @EnableFeignClients(clients = { /** ummp-portal **/ IUserRpcController.class, IUserTokenRpcController.class, IResultCodeConfigRpcController.class, IPermissionRpcController.class, ILoginIpWhiteListRpcController.class, /** cbpsp-user **/ IUserRiskTokenController.class, ISmsRpcController.class, /** ummp-gateway**/ IOnlineCompanyRpcController.class, ICsfRpcController.class, }) public class BizOpportunityApplication { public static void main(String[] args) { RespCodePrefixEnum.map.put(PROJECT_NAME,RespCodePrefixEnum.DEFAULT); SpringApplication.run(BizOpportunityApplication.class, args); } }解释一下
这段代码是一个Spring Boot应用程序的入口类。让我逐行解释一下:
1. `@SpringBootApplication(scanBasePackages = {"com.cmcc.coc.biz.opportunity", "com.cmcc.coc.ummp.common.common"})`:这是一个注解,用于标识这是一个Spring Boot应用程序的入口类。`scanBasePackages`参数指定了需要扫描的包路径。
2. `@EnableAspectJAutoProxy(proxyTargetClass = true)`:这个注解启用了Spring的AspectJ自动代理功能,`proxyTargetClass = true`表示使用CGLIB代理方式。
3. `@EnableFeignClients(clients = {...})`:这个注解启用了Feign客户端,用于定义和配置远程服务调用。
下面是`clients`参数中的一些接口类:
- `IUserRpcController.class`、`IUserTokenRpcController.class`、`IResultCodeConfigRpcController.class`等是远程服务的接口类,用于定义与这些服务进行交互的方法。
- 这些接口类可能属于不同的模块,如`ummp-portal`、`cbpsp-user`、`ummp-gateway`等。
最后,`main`方法是应用程序的入口点。在这里,我们可以看到将应用程序类传递给`SpringApplication.run()`方法来启动Spring Boot应用程序。还有一行代码是将某个常量值映射到`RespCodePrefixEnum.map`中。
总之,这段代码定义了一个Spring Boot应用程序的入口类,并配置了一些注解和远程服务的接口类。
阅读全文