Spring boot 常用注解
@SpringBootApplication:用于启动Spring Boot应用程序的主类上,组合了@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解。
@RestController :修饰类,使用@RestController注解的Controller中的方法默认返回值都会以JSON格式进行输出。
@RequestMapping("/path") : 修饰类,该控制器的请求路径
@GetMapping/@PostMapping/@PutMapping/@DeleteMapping:用于绑定HTTP请求的方法(GET/POST/PUT/DELETE)到相应的处理器方法
@Autowired、@Resource: 修饰属性,按照类型进行依赖注入
@PathVariable: 修饰参数,将路径值映射到参数上
@ResponseBody: 修饰方法,该方法会返回Json数据
@RequestBody(需要使用Post提交方式): 修饰参数,将Json数据封装到对应参数中
@Controller@Service@Compont : 将类注册到ioc容器
@Transactional:开启事务管理
例子:
以下是一个使用了大量Spring Boot注解的示例:
UserController.java
@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("")public List<User> listUsers() {return userService.findAll();}@PostMapping("")public User saveUser(@RequestBody User user) {userService.saveUser(user);return user;}@PutMapping("")public User updateUser(@RequestBody User user) {userService.updateUser(user);return user;}@DeleteMapping("/{userId}")public boolean deleteUser(@PathVariable Long userId) {userService.deleteUser(userId);return true;}
}
UserService.java
@Service
@Transactional
public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;@Overridepublic List<User> findAll() {return userDao.findAll();}@Overridepublic void saveUser(User user) {userDao.save(user);}@Overridepublic void updateUser(User user) {userDao.update(user);}@Overridepublic void deleteUser(Long userId) {userDao.delete(userId);}
}
UserDao.java
@Component
public class UserDao {// 展示常规的@Resource注入方式@Resourceprivate JdbcTemplate jdbcTemplate;public List<User> findAll() {String sql = "SELECT * FROM user";return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));}public void save(User user) {String sql = "INSERT INTO user(name, age) VALUES (?, ?)";jdbcTemplate.update(sql, user.getName(), user.getAge());}public void update(User user) {String sql = "UPDATE user SET name = ?, age = ? WHERE id = ?";jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getId());}public void delete(Long userId) {String sql = "DELETE FROM user WHERE id = ?";jdbcTemplate.update(sql, userId);}
}
在这里:
@RestController:将UserController类声明为一个控制器。
@RequestMapping("/users"):将"/users"路径映射到UserController类上。
@Autowired:通过自动注入的方式向UserController中注入了UserService对象。
@GetMapping("")、@PostMapping("")、@PutMapping("")、@DeleteMapping("/{userId}"):分别对应HTTP的GET、POST、PUT、DELETE请求方法,将它们绑定到UserController中的相应方法上,其中@DeleteMapping还使用了@PathVariable注解来获取请求参数中的userId值。
@RequestBody:将POST和PUT请求中的数据转换成对应的Java对象(User对象)。
@Service:告诉Spring该类是一个服务类。
@Transactional:开启该类的所有方法的事务管理。
@Component:告诉Spring要将该类作为Bean注册到应用程序上下文中。
@Resource:注入JdbcTemplate对象(由于JdbcTemplate不是Spring Boot预置的Bean,所以使用常规的注入方式)。