以下是在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:用于注入资源。
下面是一些代码,对上述注释进行更详细的解释:
- @RequestMapping
这是一个用于映射web请求的注解。例如:
@Controller
@RequestMapping("/home")
public class HomeController {
@RequestMapping(method = RequestMethod.GET)
public String showHome() {
return "home";
}
}
在这个例子中,@RequestMapping("/home")定义了一个处理所有"/home" URL的请求的控制器。方法showHome()上的@RequestMapping说明该方法处理GET请求。
- @Autowired
这是一个用于依赖注入的注解。例如:
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
在这个例子中,@Autowired注解使得Spring自动注入一个UserRepository的实例到UserService中。
- @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字段。
- @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响应体。
- @Inject和@Qualifier
当存在多个相同类型的Bean时,我们可以使用@Inject和@Qualifier来精确指定注入哪一个Bean。
@Service
public class MyService {
@Inject
@Qualifier("specificBean")
private MyBean myBean;
//...
}
在这个例子中,我们指定要注入名为"specificBean"的MyBean实例。
- @Service和@Repository
这两个注解通常用于标注服务层和数据访问层的类。例如:
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
//...
}
@Repository
public class UserRepository {
//...
}
在这个例子中,UserService类被标注为一个服务,UserRepository被标注为一个数据访问对象。
- @ModelAttribute
这个注解可以用于方法参数,将模型属性绑定到视图。例如:
@Controller
public class UserController {
//...
@GetMapping("/user")
public String getUser(@ModelAttribute("user") User user) {
//...
return "userView";
}
}
在这个例子中,一个名为"user"的模型属性将被添加到视图中。这个属性的值来源于参数。
- @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。
- @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格式发送的。