@SpringBootApplication注解的scanBasePackages属性值里面的***,**和*的区别
时间: 2023-11-24 08:05:52 浏览: 155
@SpringBootApplication注解的scanBasePackages属性用于指定扫描的包路径,其中可以使用通配符*来匹配多个字符,具体区别如下:
*:匹配任意字符,但只能匹配一层路径,例如com.example.*只能匹配com.example下的直接子包,不能匹配com.example.subpackage下的包。
**:匹配任意字符,可以匹配多层路径,例如com.example.**可以匹配com.example及其所有子包。
***:无效的通配符,不可使用。
相关问题
@SpringBootApplication(scanBasePackages = {"${yudao.info.base-package}.server", "${yudao.info.base-package}.module"})
`@SpringBootApplication` 注解中的 `scanBasePackages` 属性用于指定需要扫描的基础包路径,这些路径下的组件将被自动注册到 Spring 容器中。
在你给出的示例中,`scanBasePackages` 属性指定了两个基础包路径:`${yudao.info.base-package}.server` 和 `${yudao.info.base-package}.module`。这意味着,Spring Boot 将扫描这两个路径下的所有组件,并将它们注册到 Spring 容器中。
`${yudao.info.base-package}` 是一个占位符,它的值可以在 Spring Boot 的配置文件中进行配置。例如,在 `application.properties` 文件中可以这样配置:
```
yudao.info.base-package=com.example
```
这样,`${yudao.info.base-package}` 就会被替换成 `com.example`,从而形成实际的包路径。因此,在上面的示例中,实际扫描的基础包路径可能是 `com.example.server` 和 `com.example.module`。
@SpringBootApplication注解的scanBasePackages属性值里面的****,***,**和*的区别
`@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` 等单层的包路径。
阅读全文