SpringBoot相关注解及用法
SpringBoot相关注解及用法
总结一下SpringBoot相关注解及用法,方便自己日后查阅以及复习
一、核心注解
1. @SpringBootApplication
- 作用:Spring Boot 应用的入口注解,组合了以下三个注解:
@Configuration:标记当前类为配置类,可包含@Bean方法。@EnableAutoConfiguration:启用 Spring Boot 的自动配置机制。@ComponentScan:扫描当前包及其子包下的组件(如@Controller,@Service,@Repository等)。
- 示例:
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
2. @Component
- 作用:通用组件注解,标记一个类为 Spring 管理的 Bean。
- 示例:
// 定义一个带有 @Component 的Bean @Component public class MyService { public void doSomething() { ... } } // 在另一个类中通过 @Autowired 注入 @Component public class AnotherService { @Autowired private MyService myService; }
@Service:特化 @Component,通常用于服务层(Service Layer)。
@Repository:特化 @Component,通常用于数据访问层(DAO层),并能集成Spring的异常转换。
@Controller:特化 @Component,用于Web层(如Spring MVC的控制器)。
3. @ComponentScan
- 作用:指定扫描组件的包路径(通常与
@SpringBootApplication结合使用)。 - 示例:
@SpringBootApplication @ComponentScan("com.example") public class Application { ... }
二、Bean 配置注解
1. @Configuration
- 作用:标记一个类为配置类,用于定义 Bean(通过
@Bean方法)。 - 示例:
@Configuration public class AppConfig { @Bean public MyService myService() { return new MyService(); } }
2. @Bean
- 作用:在配置类中显式定义一个 Bean。
- 示例:见上文
@Configuration示例。
3. @Scope
- 作用:定义 Bean 的作用域(默认为
singleton)。 - 示例:
@Scope("prototype") @Component public class MyBean { ... }
三、组件类型注解
1. @Controller
- 作用:标记一个类为控制器,处理 HTTP 请求(通常与
@RequestMapping配合使用)。 - 示例:
@Controller public class MyController { @RequestMapping("/hello") public String hello() { return "hello"; } }
2. @RestController
- 作用:组合
@Controller和@ResponseBody,直接返回数据(如 JSON)。 - 示例:
@RestController public class MyRestController { @GetMapping("/data") public Map<String, Object> getData() { return Map.of("message", "Hello World"); } }
3. @Service
- 作用:标记一个类为服务层组件(通常用于业务逻辑)。
- 示例:
@Service public class MyService { public String sayHello() { return "Hello!"; } }
4. @Repository
- 作用:标记一个类为数据访问层组件(如 DAO),用于异常转换。
- 示例:
@Repository public class MyRepository { // 数据库操作 }
四、依赖注入注解
1. @Autowired
- 作用:自动装配 Bean(可通过构造函数、字段或方法注入)。
- 示例:
@Service public class MyService { @Autowired private MyRepository myRepository; }
2. @Qualifier
- 作用:当存在多个相同类型的 Bean 时,指定具体 Bean 的名称。
- 示例:
@Autowired @Qualifier("myBean") private MyBean myBean;
3. @Value
- 作用:注入配置文件中的属性值(如
application.properties)。 - 示例:
@Value("${app.name}") private String appName;
五、Web 相关注解
1. @RequestMapping
- 作用:映射 HTTP 请求到方法或类。
- 示例:
@RequestMapping("/users") public class UserController { @RequestMapping(method = RequestMethod.GET) public List<User> getAllUsers() { ... } }
2. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
- 作用:简化
@RequestMapping的方法类型指定。 - 示例:
@PostMapping("/create") public User createUser(@RequestBody User user) { ... }
3. @RequestBody
- 作用:将 HTTP 请求体反序列化为对象。
- 示例:见上文
@PostMapping示例。
4. @PathVariable
- 作用:从 URL 路径中提取变量。
- 示例:
@GetMapping("/users/{id}") public User getUser(@PathVariable("id") Long id) { ... }
六、数据访问注解
1. @Transactional
- 作用:声明事务边界(通常用于服务层方法)。
- 示例:
@Service public class MyService { @Transactional public void saveUser(User user) { ... } }
2. @Entity
- 作用:标记一个类为 JPA 实体类(用于数据库映射)。
- 示例:
@Entity public class User { @Id @GeneratedValue private Long id; // 其他字段和方法 }
3. @RepositoryRestResource
- 作用:暴露 Spring Data REST 的资源(需启用
@EnableSpringDataWebSupport)。 - 示例:
@RepositoryRestResource(path = "books") public interface BookRepository extends JpaRepository<Book, Long> { ... }
七、配置与条件注解
1. @EnableAutoConfiguration
- 作用:启用 Spring Boot 的自动配置(通常由
@SpringBootApplication包含)。
2. @ConditionalOnProperty
- 作用:根据配置属性条件加载 Bean。
- 示例:
@ConditionalOnProperty(name = "feature.enabled", havingValue = "true") @Bean public FeatureService featureService() { ... }
3. @Profile
- 作用:根据活跃的 Profile 加载 Bean。
- 示例:
@Profile("dev") @Configuration public class DevConfig { ... }
八、测试相关注解
1. @SpringBootTest
- 作用:启动完整的 Spring 上下文用于测试。
- 示例:
@SpringBootTest public class MyApplicationTests { @Autowired private MyService myService; // 测试方法 }
2. @MockBean
- 作用:在测试中替换 Bean 为 Mock 对象。
- 示例:
@MockBean private MyRepository myRepository;
九、其他常用注解
1. @PostConstruct
- 作用:在 Bean 初始化后执行方法。
- 示例:
@PostConstruct public void init() { ... }
2. @PreDestroy
- 作用:在 Bean 销毁前执行方法。
- 示例:
@PreDestroy public void cleanup() { ... }
3. @CrossOrigin
- 作用:启用跨域资源共享(CORS)。
- 示例:
@CrossOrigin(origins = "http://example.com") @RestController public class MyController { ... }

浙公网安备 33010602011771号