下面我为你详细讲解一下“浅谈Spring常用注解”的完整攻略。
前言
Spring框架作为Java开发领域内一款极其常用的框架,其提供的注解机制为我们的开发带来了很大的便利。本篇文章将会聚焦于 Spring 常用注解,为大家详细介绍其基本用法和常用场景,并通过示例来加深理解。
常用注解
@Autowired
@Autowired 注解一般用于实现依赖注入,它可以自动在容器中寻找对应的Bean注入到成员变量中,不需要手动执行 bean 的实例化。可以将 @Autowired 注解标识在方法、构造函数、字段上,但是由于它是通过类型寻找 bean 进行注入,存在且仅存在一个类型时才能生效。
示例1
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public void addUser(User user) {
userDao.addUser(user);
}
}
示例2
@RestController
@RequestMapping("/user")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@PostMapping
public void addUser(@RequestBody User user) {
userService.addUser(user);
}
}
@Component
@Component 注解用于将类定义为 Spring Bean,并由 Spring 容器进行管理。一般情况下,通过 @Component 注解标识的类会扫描整个应用的 classpath,扫描到所有的 Bean 进行实例化并交由 Spring 容器进行管理。@Component 注解还有很多的扩展注解,如 @Service、@Controller、@Repository 等,它们都是基于 @Component 注解进行扩展。
示例1
@Component
public class UserServiceImpl implements UserService {
//...
}
示例2
@Service
public class UserServiceImpl implements UserService {
//...
}
@RequestMapping
@RequestMapping 注解用于定义 Controller 的请求路由,它可以定义请求的 URL 和建立 URL 与 Controller 方法之间的映射关系,常用于定义 REST API。
示例1
@RestController
@RequestMapping("/user")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@PostMapping("/{userId}")
public void updateUser(@PathVariable Long userId, @RequestBody User user) {
userService.updateUser(userId, user);
}
}
示例2
@RestController
@RequestMapping("/user")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/{userId}")
public User getUser(@PathVariable Long userId) {
return userService.getUser(userId);
}
}
@Transactional
@Transactional 注解用于指定事务的特征,它可以标记在类上或者方法上,用于定义某个方法或整个类的事务特征,如隔离级别、超时时间、事务是否只读等等。通过 @Transactional 注解,我们可以让 Spring 自动为我们管理事务,避免出现脏读、不可重复读和幻读等问题。
示例1
@Service
public class UserServiceImpl implements UserService {
@Transactional
@Override
public void addUser(User user) {
//...
}
}
@Value
@Value 注解用于从配置文件中读取配置项的值,并注入到成员变量中,它可以注解在字段或者方法上。在 @Value 注解中,可以使用 ${} 形式来表示需要读取的配置项,如 ${server.port}。
示例1
application.yml
server:
port: 8080
@Controller
public class IndexController {
@Value("${server.port}")
private Integer port;
@GetMapping("/")
public String index(Model model) {
model.addAttribute("port", port);
return "index";
}
}
结语
以上就是我对 Spring 常用注解的一个简单介绍。虽然注解的使用十分简单,但是在实际使用中,我们还需要结合具体的业务场景灵活运用,才能充分发挥注解的优势。希望通过本文,你可以初步掌握 Spring 常用注解的使用,并能够在实际项目开发中加以应用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈spring 常用注解 - Python技术站