springboot默认加载类在哪里定义
时间: 2024-09-11 08:19:04 浏览: 43
springboot 默认静态路径实例解析
Spring Boot 应用的默认类加载机制是基于 Java 的类加载机制和 Spring 的组件扫描机制。Spring Boot 应用通常会有一个包含 `main` 方法的启动类,并且这个启动类上通常会标注 `@SpringBootApplication` 注解。这个注解是一个组合注解,它包含 `@EnableAutoConfiguration`、`@ComponentScan` 和 `@SpringBootConfiguration`。
其中的 `@ComponentScan` 注解会告诉 Spring Boot 应用进行组件扫描。默认情况下,如果没有指定 `scanBasePackages` 或者 `basePackages` 属性,那么扫描的范围是包含启动类的包及其子包。
`@SpringBootApplication` 注解的定义如下:
```java
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
// ... 其他属性和方法
}
```
`@ComponentScan` 注解的默认行为是扫描与启动类位于同一包或子包下的所有组件,包括带有 `@Component`, `@Service`, `@Repository`, `@Controller`, `@RestController` 等注解的类。
如果你需要自定义这个扫描的行为,可以通过 `@ComponentScan` 注解的 `basePackages` 属性来指定一个或多个包路径,这样 Spring Boot 就只会扫描这些指定的包路径下的组件。
阅读全文