欢迎光临
我们一直在努力

Java springboot里注解大全和使用指南

在 Java Spring Boot 中,注解是简化开发、提高效率的关键工具。以下是一些核心注解及其使用指南,按功能分类整理:

一、核心启动与配置注解

  • @SpringBootApplication

    • 作用:Spring Boot 应用的核心注解,用于标记主启动类。它是一个组合注解,等价于同时使用 @Configuration、@EnableAutoConfiguration 和 @ComponentScan。
    • 使用场景:必须添加在 Spring Boot 应用的主启动类上,是应用启动的必要条件。
    • 示例:
  • @SpringBootApplication
    public class DemoApplication {
    public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
    }
    }

    @Configuration

    • 作用:声明当前类是一个配置类,相当于 Spring 的 XML 配置文件。
    • 使用场景:用于定义和配置 Bean,通常配合 @Bean 注解一起使用。
    • 示例:

    @Configuration
    public class AppConfig {
    @Bean
    public DataSource dataSource() {
    // 配置并返回一个数据源 Bean
    return new HikariDataSource();
    }
    }

  • @EnableAutoConfiguration

    • 作用:启用 Spring Boot 的自动配置机制,根据类路径和配置文件中的信息自动配置 Spring 应用。
    • 使用场景:通常与 @SpringBootApplication 一起使用,无需单独使用。
  • @ComponentScan

    • 作用:自动扫描指定包及其子包下的组件(如 @Component、@Service、@Repository、@Controller 等),并将它们注册为 Spring Bean。
    • 使用场景:通常与 @SpringBootApplication 一起使用,无需单独使用。若需自定义组件扫描范围,可通过 basePackages 属性指定。
    • 示例:
  • @SpringBootApplication(scanBasePackages = "com.example.demo")
    public class DemoApplication {
    // …
    }

    二、组件注册注解

  • @Component

    • 作用:通用的组件注解,用于标记任何类为 Spring 的组件。Spring 会自动扫描并创建该类的实例。
    • 使用场景:当组件不属于 Controller、Service、Repository 等特定层级时使用。
    • 示例:
  • @Component
    public class ToolUtil {
    public String formatStr(String str) {
    return str.trim().toUpperCase();
    }
    }

    @Service

    • 作用:标记业务逻辑层(Service 层)的组件,是 @Component 的特化版本,语义更加明确。
    • 使用场景:用于封装核心业务逻辑。
    • 示例:

    @Service
    public class UserService {
    public User getUserById(Integer id) {
    // 实际场景中会调用 Repository 层查询数据库
    User user = new User();
    user.setId(id);
    user.setName("李四");
    return user;
    }
    }

    @Repository

    • 作用:标记数据访问层(DAO 层)的组件,是 @Component 的特化版本。除了将类注册为 Bean 外,它还额外提供了持久化异常转换的功能。
    • 使用场景:用于封装数据访问逻辑,与数据库交互。
    • 示例:

    @Repository
    public interface UserRepository extends JpaRepository<User, Integer> {
    User findByName(String name);
    }

    @Controller

    • 作用:标记控制层组件,用于接收 HTTP 请求并返回视图或数据。
    • 使用场景:Web 层控制器类,处理用户请求(如页面跳转、表单提交等)。
    • 示例:

    @Controller
    @RequestMapping("/user")
    public class UserController {
    @GetMapping("/info")
    public String userInfo(Model model) {
    model.addAttribute("username", "张三");
    return "user-info"; // 返回视图名
    }
    }

    @RestController

    • 作用:组合注解,相当于 @Controller + @ResponseBody。用于构建 RESTful API,返回 JSON/XML 等数据格式,而非视图。
    • 使用场景:前后端分离项目的接口层,提供 RESTful API(如移动端接口、前端 AJAX 请求接口)。
    • 示例:

    @RestController
    @RequestMapping("/api/user")
    public class UserRestController {
    @GetMapping("/info")
    public User getUserInfo() {
    User user = new User();
    user.setId(1);
    user.setName("张三");
    return user; // 直接返回 User 对象,会自动转为 JSON
    }
    }

    三、依赖注入注解

  • @Autowired

    • 作用:自动注入依赖的 Bean,Spring 会在 IoC 容器中查找匹配类型的 Bean 并注入到目标字段、构造方法或 setter 方法中。
    • 使用场景:需要注入其他 Bean 依赖时(如 Service 层注入 Repository 层、Controller 层注入 Service 层)。
    • 示例:
  • @RestController
    public class UserRestController {
    private final UserService userService;

    @Autowired
    public UserRestController(UserService userService) {
    this.userService = userService;
    }

    @GetMapping("/info")
    public User getUserInfo() {
    return userService.getUserById(1);
    }
    }

    @Qualifier

    • 作用:与 @Autowired 一起使用,用于指定要注入的 Bean 的名称。当存在多个相同类型的 Bean 时,可以使用 @Qualifier 来指定注入哪一个。
    • 使用场景:解决相同类型 Bean 的歧义性注入问题。
    • 示例:

    @RestController
    public class UserRestController {
    private final UserService userService;

    @Autowired
    @Qualifier("userServiceImpl") // 指定注入的 Bean 名称
    public UserRestController(UserService userService) {
    this.userService = userService;
    }

    // …
    }

    @Value

    • 作用:注入配置文件中的值,可以注入 String、int、long、double、boolean 等类型。
    • 使用场景:从配置文件中读取配置值并注入到 Bean 的属性中。
    • 示例:

    @Component
    public class AppConfig {
    @Value("${server.port}")
    private int port;

    // …
    }

    四、Web 开发注解

  • @RequestMapping

    • 作用:映射 HTTP 请求到处理方法,可以用于类和方法上。用于指定请求 URL 和 HTTP 方法(GET、POST、PUT、DELETE 等)。
    • 使用场景:处理 Web 请求,将请求映射到具体的处理方法上。
    • 示例:
  • @RestController
    @RequestMapping("/api/user")
    public class UserRestController {
    @GetMapping("/info")
    public User getUserInfo() {
    // …
    }

    @PostMapping("/create")
    public User createUser(@RequestBody User user) {
    // …
    }
    }

    @GetMapping、@PostMapping、@PutMapping、@DeleteMapping

    • 作用:分别用于映射 HTTP GET、POST、PUT、DELETE 请求到处理方法上。它们是 @RequestMapping 的特化,分别对应不同的 HTTP 请求方法。
    • 使用场景:简化 RESTful API 的开发,直接对应 HTTP 方法。
    • 示例:

    @RestController
    @RequestMapping("/api/user")
    public class UserRestController {
    @GetMapping("/info")
    public User getUserInfo() {
    // …
    }

    @PostMapping("/create")
    public User createUser(@RequestBody User user) {
    // …
    }
    }

    @RequestParam

    • 作用:用于将请求参数绑定到 Controller 方法的参数上。
    • 使用场景:获取 URL 查询参数或表单提交的参数。
    • 示例:

    @GetMapping("/search")
    public List<User> searchUsers(@RequestParam String name, @RequestParam(defaultValue = "10") int size) {
    // …
    }

    @PathVariable

    • 作用:用于获取请求路径中的参数,通常用于 RESTful 风格的 API 上。
    • 使用场景:从 URL 路径中提取参数值。
    • 示例:

    @GetMapping("/user/{id}")
    public User getUserById(@PathVariable Long id) {
    // …
    }

    @RequestBody

    • 作用:用于接收请求体中的 JSON 数据,并将其绑定到 Controller 方法的参数上。
    • 使用场景:处理 POST、PUT 等请求中的 JSON 数据。
    • 示例:

    @PostMapping("/create")
    public User createUser(@RequestBody User user) {
    // …
    }

    @ResponseBody

    • 作用:表示该方法的返回结果直接写入 HTTP 响应体中,返回数据的格式为 application/json。通常与 @Controller 一起使用,若使用 @RestController 则无需使用此注解。
    • 使用场景:返回 JSON/XML 等数据格式,而非视图。
    • 示例:

    @Controller
    public class UserController {
    @GetMapping("/info")
    @ResponseBody
    public User getUserInfo() {
    User user = new User();
    user.setId(1);
    user.setName("张三");
    return user;
    }
    }

    赞(0)
    未经允许不得转载:171主机测评 » Java springboot里注解大全和使用指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址