Spring Boot:快速构建Java应用
Spring Boot:快速构建Java应用
概述
Spring Boot是Spring的快速开发脚手架,它简化了Spring应用的配置和部署。通过自动配置和起步依赖,Spring Boot让Java应用的开发变得简单高效。
1. Spring Boot项目结构
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
2. RESTful Controller
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping
public List<User> getAllUsers() {
return userService.findAll();
}
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userService.findById(id);
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.create(user);
}
@PutMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody User user) {
return userService.update(id, user);
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
userService.delete(id);
}
}
3. 配置文件
server:
port: 8080
spring:
application:
name: my-app
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: 123456
app:
name: MyApp
version: 1.0.0
4. 数据访问
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
List<User> findByAgeGreaterThan(int age);
}
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User findByUsername(String username) {
return userRepository.findByUsername(username);
}
}
5. 异常处理
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(UserNotFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public ErrorResponse handleUserNotFound(UserNotFoundException e) {
return new ErrorResponse("USER_NOT_FOUND", e.getMessage());
}
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public ErrorResponse handleGeneral(Exception e) {
return new ErrorResponse("ERROR", "系统错误");
}
}
最佳实践
- 使用自动配置:充分利用Spring Boot的约定
- 外部化配置:使用application.yml管理配置
- 使用Actuator:监控应用健康状态
- 使用Profile:区分不同环境配置
- 使用Spring Data:简化数据访问
总结
Spring Boot是Java Web开发的首选框架,它简化了Spring应用的配置和部署。掌握Spring Boot的核心功能,可以快速构建和部署高质量的Java应用。