Java EE--注解

123 阅读4分钟

以下是在Java EE中常用的一些注解的列举:

  • @RequestMapping:映射请求到特定的处理器函数。
  • @GetMapping:用于处理GET请求。
  • @PostMapping:用于处理POST请求。
  • @PutMapping:用于处理PUT请求。
  • @DeleteMapping:用于处理DELETE请求。
  • @PathVariable:获取URI中的参数。
  • @RequestParam:获取查询参数。
  • @Autowired:自动装配,实现依赖注入。
  • @Qualifier:在存在多个相同类型的Bean时,用于指定使用哪个Bean。
  • @Service:标注业务实现类。
  • @Repository:标注数据访问类。
  • @Component:泛指组件,当组件不好归类时,使用这个注解标注。
  • @Entity:标记类为实体类,与数据库表对应。
  • @Column:标记实体类的属性为数据库表的字段。
  • @Id:标记实体类的属性为主键。
  • @GeneratedValue:表明主键的生成策略。
  • @SessionAttributes:用于定义存储在session中的属性。
  • @ModelAttribute:绑定方法参数到命名的模型属性,并暴露给web视图。
  • @Controller:标注控制器类。
  • @RestController:标注REST风格的控制器类。
  • @ResponseBody:将返回值直接写入到Http响应body中。
  • @ExceptionHandler:全局处理异常。
  • @Inject:Java EE的依赖注入注解。
  • @Resource:用于注入资源。

下面是一些代码,对上述注释进行更详细的解释:

  1. @RequestMapping

这是一个用于映射web请求的注解。例如:

@Controller  
@RequestMapping("/home")  
public class HomeController {  
  
    @RequestMapping(method = RequestMethod.GET)  
    public String showHome() {  
        return "home";  
    }  
}

在这个例子中,@RequestMapping("/home")定义了一个处理所有"/home" URL的请求的控制器。方法showHome()上的@RequestMapping说明该方法处理GET请求。

  1. @Autowired

这是一个用于依赖注入的注解。例如:

@Service  
public class UserService {  
      
    private final UserRepository userRepository;  
      
    @Autowired  
    public UserService(UserRepository userRepository) {  
        this.userRepository = userRepository;  
    }  
}

在这个例子中,@Autowired注解使得Spring自动注入一个UserRepository的实例到UserService中。

  1. @Entity 和  @Column

这两个注解通常一起使用,用于标注一个类为实体类,并标注其属性为数据库表的字段。例如:

@Entity  
public class User {  
      
    @Id  
    @GeneratedValue(strategy = GenerationType.AUTO)  
    private Long id;  
      
    @Column(name = "username")  
    private String username;  
      
    // getters and setters omitted for brevity  
}

在这个例子中,@Entity表明User类是一个实体类,而@Column注解则说明username属性对应数据库表的username字段。

  1. @Controller 和  @ResponseBody

这两个注解通常用于创建REST API。例如:

@RestController  
public class UserController {  
      
    private final UserService userService;  
      
    @Autowired  
    public UserController(UserService userService) {  
        this.userService = userService;  
    }  
      
    @GetMapping("/users")  
    @ResponseBody  
    public List<User> getAllUsers() {  
        return userService.getAllUsers();  
    }  
}

在这个例子中,@RestController表明这是一个REST风格的控制器。@GetMapping("/users")定义了一个处理GET请求的方法,而@ResponseBody表明该方法的返回值应直接写入HTTP响应体。

  1. @Inject和@Qualifier

当存在多个相同类型的Bean时,我们可以使用@Inject和@Qualifier来精确指定注入哪一个Bean。

@Service  
public class MyService {  
      
    @Inject  
    @Qualifier("specificBean")  
    private MyBean myBean;  
      
    //...  
}

在这个例子中,我们指定要注入名为"specificBean"的MyBean实例。

  1. @Service和@Repository

这两个注解通常用于标注服务层和数据访问层的类。例如:

@Service  
public class UserService {  
      
    private final UserRepository userRepository;  
      
    @Autowired  
    public UserService(UserRepository userRepository) {  
        this.userRepository = userRepository;  
    }  
      
    //...  
}  
  
@Repository  
public class UserRepository {  
      
    //...  
}

在这个例子中,UserService类被标注为一个服务,UserRepository被标注为一个数据访问对象。

  1. @ModelAttribute

这个注解可以用于方法参数,将模型属性绑定到视图。例如:

@Controller  
public class UserController {  
      
    //...   
      
    @GetMapping("/user")  
    public String getUser(@ModelAttribute("user") User user) {  
        //...   
        return "userView";  
    }  
}

在这个例子中,一个名为"user"的模型属性将被添加到视图中。这个属性的值来源于参数。

  1. @DeleteMapping

@DeleteMapping 是一个用于处理HTTP DELETE请求的注解。它通常用于删除某个资源。例如,下面的代码用于删除一个指定ID的用户:

@RestController  
@RequestMapping("/users")  
public class UserController {  
      
    private final UserService userService;  
      
    @Autowired  
    public UserController(UserService userService) {  
        this.userService = userService;  
    }  
      
    // ... 其他代码 ...  
      
    @DeleteMapping("/{id}")  
    public ResponseEntity<?> deleteUser(@PathVariable Long id) {  
        userService.deleteUser(id);  
        return new ResponseEntity<>(HttpStatus.NO_CONTENT);  
    }  
}

在这个例子中,@DeleteMapping("/{id}")表明这个方法用于处理删除用户的请求,其中{id}是路径变量,表示要删除的用户的ID。

  1. @PutMapping

@PutMapping是一个用于处理HTTP PUT请求的注解。它通常用于更新资源。例如,下面的代码用于更新一个用户的信息:

@RestController  
@RequestMapping("/users")  
public class UserController {  
      
    private final UserService userService;  
      
    @Autowired  
    public UserController(UserService userService) {  
        this.userService = userService;  
    }  
      
    // ... 其他代码 ...  
      
    @PutMapping("/{id}")  
    public ResponseEntity<?> updateUser(@PathVariable Long id, @RequestBody User updatedUser) {  
        userService.updateUser(id, updatedUser);  
        return new ResponseEntity<>(HttpStatus.OK);  
    }  
}

在这个例子中,@PutMapping("/{id}")表明这个方法用于处理更新用户的请求,其中{id}是路径变量,表示要更新的用户的ID。@RequestBody User updatedUser表示从请求体中获取更新的用户信息。这些信息通常是以JSON格式发送的。