组件类与配置类
在Spring框架中,组件类和配置类是两个重要的概念,它们扮演着不同的角色。
- 组件类(Component Class):
组件类是指那些使用Spring注解标识的类,如@Component、@Controller、@Service、@Repository等。这些类通常承担特定的业务逻辑、数据访问或控制器等角色。组件类的主要作用是在运行时由Spring容器自动创建实例,并对其进行管理和依赖注入。它们一般用来封装具体的业务逻辑或功能实现。 - 配置类(Configuration Class):
配置类是指那些使用Spring注解标识的类,如@Configuration。配置类主要用于定义Spring容器的配置信息,包括Bean的创建、依赖关系的设置、切面配置、数据库连接等等。配置类中通常会有一些特殊的方法,用于通过@Bean注解声明Bean的创建和配置。
@Configuration //表示当前类是配置类,优先加载
public class MybatisPlusConfig {
@Bean //表示配置类加载的时候执行这个方法,并且将方法的返回值封装到Spring容器中
public MybatisPlusInterceptor mybatisPlusInterceptor(){
//1、创建mybatisPlusInterceptor拦截器对象
MybatisPlusInterceptor mybatisPlusInterceptor=new MybatisPlusInterceptor();
//2、添加分页拦截器
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mybatisPlusInterceptor;
}
}
组件类和配置类之间的区别可以总结如下:
- 功能不同:组件类主要用于封装业务逻辑和功能实现,而配置类主要用于定义Spring容器的配置信息。
- 注解不同:组件类使用的是@Component及其派生注解,而配置类使用的是@Configuration注解。
- 角色不同:组件类一般扮演特定的业务角色,如控制器、服务类、数据访问类等;配置类用于配置和管理Spring容器的行为。
- 方法不同:组件类主要包含业务逻辑的实现方法;配置类包含一些特殊的配置方法,通过@Bean注解声明Bean的创建和配置。
通常情况下,Spring应用程序需要包含至少一个配置类,用于整合和配置应用程序的各个组件,并告诉Spring容器如何创建和管理这些组件。组件类由配置类进行扫描和管理,可以通过依赖注入等方式在应用程序中使用。
常用注解
控制层:
- @Controller: 用于标记一个类作为Spring MVC Controller的组件。
- @RestController: 这是一个组合注解,它包含了@Controller和@ResponseBody。当一个类用@RestController来标记时,它的所有处理方法都默认使用@ResponseBody。
- @RequestMapping: 用于将HTTP请求映射到处理器的特定处理方法。它可以在类级别和方法级别使用。
- @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping: 这些是@RequestMapping的专用变体,分别用于处理HTTP GET, POST, PUT, DELETE, PATCH请求。
- @PathVariable: 用于将一个URI模板变量映射到方法的参数上。
- @RequestParam: 用于将请求参数映射到方法的参数上。
- @ResponseBody: 用于将控制器方法的返回值绑定到web响应body。
服务层(Service Layer):
- @Service: 标注在Service层类上,表示定义一个服务组件。
- @Transactional: 用于方法或类上,声明事务策略。
数据访问层(Data Access Layer):
- @Repository: 标注在DAO层类上,表示定义一个数据仓库组件,用来封装数据库访问。
JPA
JPA(Java Persistence API)定义了一种Java标准,用于管理关系型数据和对象之间的映射关系。在Spring Boot中使用JPA,通常会创建实体(Entity)类来映射数据库中的表结构。
- @Entity: 在类级别使用,表示该类是一个JPA实体。
- @Table: 指定实体对应的数据库表信息。
- @Id: 表明该成员变量是实体的ID。
- @Column: 指定实体类的属性映射到数据库表的哪个字段。JPA默认实体类名称与对应的数据库中表的列名称一致
配置和启动:
- @SpringBootApplication: 组合注解,用于启动Spring Boot应用程序,包含了@Configuration、@EnableAutoConfiguration和@ComponentScan。
- @Configuration: 表示定义一个配置类。
- @EnableAutoConfiguration: 让Spring Boot根据添加的jar依赖猜测你的配置。
- @ComponentScan: 自动扫描并加载符合条件的组件或bean定义。
- @Bean: 在配置类方法上使用,表示将该方法的返回值定义为一个bean。
测试:
- @SpringBootTest: 用于测试类上,用来提供Spring Boot应用程序的配置。
- @DataJpaTest: 提供JPA相关的配置,用于数据层的单元测试。
- @WebMvcTest: 提供Web层的配置,用于测试MVC控制器。
- @MockBean: 在Spring Boot测试中,用于添加一个Mockito的模拟Bean用于测试。