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);
- }
- }
复制代码
2. 配置类注解
- @Configuration:
- 标注当前类为配置类,用于界说 Bean 和其他配置信息。
- 可以用 @Bean 注解界说一个 Bean,并返回 Bean 实例。
示例:
- @Configuration
- public class MyConfig {
- @Bean
- public 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 {
- @Bean
- public 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 {
- @Transactional
- public 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 {
- @Autowired
- private UserRepository userRepository;
- // ...
- }
复制代码
- @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 {
- @Bean
- public MyService myService() {
- return new MyServiceImpl();
- }
- }
复制代码
- @Import:
示例:
- @SpringBootApplication
- @Import(MyConfig.class)
- public class MyApplication {
- // ...
- }
复制代码
7. Spring Data JPA 注解
- @Repository:
- @Query:
- @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("hasRole('ADMIN')")
- @GetMapping("/admin")
- public String adminPage() {
- // ...
- }
复制代码
9. Spring Cloud 注解
- @EnableEurekaServer:
- @EnableDiscoveryClient:
- @FeignClient:
- @HystrixCommand:
示例:
- @FeignClient(name = "user-service")
- public interface UserServiceClient {
- @GetMapping("/users/{id}")
- User getUser(@PathVariable Long id);
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |