Spring Boot 常用注解
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:
[*]自界说 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);
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]