1. 启动类注解
-
@SpringBootApplication:
- 它是 Spring Boot 的核心注解,包含了
@SpringBootConfiguration
、@EnableAutoConfiguration
和@ComponentScan
三个注解。 @SpringBootConfiguration
:标注当前类为配置类,类似于 Spring 的@Configuration
注解,用于配置 Spring Boot 应用的各种设置。@EnableAutoConfiguration
:开启 Spring Boot 的自动配置功能,根据项目依赖自动配置相关的 Bean。比如,如果项目依赖了spring-boot-starter-web
,它会自动配置 Spring MVC、Tomcat 等组件。@ComponentScan
: 扫描指定的包路径,寻找并注册相关的 Bean,比如 Controller、Service 等。
示例:
@SpringBootApplication public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);} }
- 它是 Spring Boot 的核心注解,包含了
2. 配置类注解
-
@Configuration:
- 标注当前类为配置类,用于定义 Bean 和其他配置信息。
- 可以用
@Bean
注解定义一个 Bean,并返回 Bean 实例。
示例:
@Configuration public class MyConfig {@Beanpublic MyService myService() {return new MyServiceImpl();} }
-
@ConfigurationProperties:
- 将配置文件中的属性映射到 Java Bean 上,方便管理配置信息。
- 可以使用
@Value
注解注入单个属性,但@ConfigurationProperties
可以方便地将整个配置文件映射到 Bean 上。
示例:
@ConfigurationProperties(prefix = "my.app") public class MyAppProperties {private String name;private int port;// getter and setter }@Configuration public class MyConfig {@Beanpublic MyAppProperties myAppProperties() {return new MyAppProperties();} }
在
application.properties
中配置:my.app.name=My Application my.app.port=8080
-
@EnableConfigurationProperties:
- 启用
@ConfigurationProperties
注解,允许将配置属性注入到 Bean 中。
示例:
@Configuration @EnableConfigurationProperties(MyAppProperties.class) public class MyConfig {// ... }
- 启用
-
@PropertySource:
- 指定配置文件的位置,可以加载多个配置文件。
示例:
@Configuration @PropertySource("classpath:my-config.properties") public class MyConfig {// ... }
3. 控制器层注解
-
@RestController:
- 标注当前类为一个 REST 控制器,返回 JSON 格式的数据。
-
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping:
- 用于处理不同类型的 HTTP 请求。
- 类似于 Spring MVC 的
@RequestMapping
注解,但更加简洁。
示例:
@RestController public class UserController {@GetMapping("/users/{id}")public User getUser(@PathVariable Long id) {// ...}@PostMapping("/users")public User createUser(@RequestBody User user) {// ...} }
-
@PathVariable、@RequestParam、@RequestBody:
- 用于获取请求参数。
@PathVariable
用于获取 URL 中的路径变量。@RequestParam
用于获取 URL 中的查询参数。@RequestBody
用于获取请求体内容。
-
@ResponseBody:
- 将返回值转换成 JSON 格式的数据,直接返回给客户端。
- 在
@RestController
中默认使用@ResponseBody
,因此不需要显式声明。
4. 服务层注解
-
@Service:
- 标注当前类为一个服务层类,用于定义业务逻辑。
-
@Transactional:
- 开启事务管理,确保多个操作的原子性。
示例:
@Service public class UserService {@Transactionalpublic void updateUser(User user) {// ...} }
5. 实体类注解
-
@Entity:
- 标注当前类为一个实体类,用于映射数据库中的表。
-
@Table:
- 指定实体类映射的数据库表名。
-
@Id:
- 标注主键字段。
-
@Column:
- 指定字段名和数据类型。
-
@GeneratedValue:
- 指定主键生成策略。
示例:
@Entity @Table(name = "users") public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(name = "name")private String name;// ... }
6. 其他常用注解
-
@Autowired:
- 自动注入依赖,类似于 Spring 的
@Resource
注解。 - 用于注入其他 Bean。
示例:
@Service public class UserService {@Autowiredprivate UserRepository userRepository;// ... }
- 自动注入依赖,类似于 Spring 的
-
@Component:
- 标注当前类为一个组件,可以被 Spring 容器管理。
示例:
@Component public class MyComponent {// ... }
-
@Qualifier:
- 用于解决多个 Bean 冲突,指定要注入的 Bean 的名称。
示例:
@Service public class UserService {@Autowired@Qualifier("myUserRepository")private UserRepository userRepository;// ... }
-
@Value:
- 注入配置文件中的属性值。
示例:
@Component public class MyComponent {@Value("${my.app.name}")private String appName;// ... }
-
@Bean:
- 在
@Configuration
类中,定义一个 Bean。
示例:
@Configuration public class MyConfig {@Beanpublic MyService myService() {return new MyServiceImpl();} }
- 在
-
@Import:
- 导入其他配置类。
示例:
@SpringBootApplication @Import(MyConfig.class) public class MyApplication {// ... }
7. Spring Data JPA 注解
-
@Repository:
- 标注当前类为一个数据访问层类。
-
@Query:
- 自定义 SQL 查询语句。
-
@Modifying:
- 标注更新操作。
示例:
@Repository public interface UserRepository extends JpaRepository<User, Long> {@Query("SELECT u FROM User u WHERE u.name = :name")User findByName(@Param("name") String name);@Modifying@Query("UPDATE User u SET u.name = :newName WHERE u.id = :id")void updateName(@Param("id") Long id, @Param("newName") String newName); }
8. Spring Security 注解
-
@EnableWebSecurity:
- 启用 Spring Security 的安全配置。
-
@PreAuthorize:
- 授权验证,例如
@PreAuthorize("hasRole('ADMIN')")
。
- 授权验证,例如
-
@Secured:
- 授权验证,类似于
@PreAuthorize
。
示例:
@PreAuthorize("hasRole('ADMIN')") @GetMapping("/admin") public String adminPage() {// ... }
- 授权验证,类似于
9. Spring Cloud 注解
-
@EnableEurekaServer:
- 启用 Eureka Server。
-
@EnableDiscoveryClient:
- 启用服务注册和发现。
-
@FeignClient:
- 声明一个 Feign 客户端。
-
@HystrixCommand:
- 启用 Hystrix 熔断机制。
示例:
@FeignClient(name = "user-service") public interface UserServiceClient {@GetMapping("/users/{id}")User getUser(@PathVariable Long id); }