Skip to content

第一章练习答案 ​

练习 1:完整三层架构 ​

java
// Entity
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(nullable = false)
    private String name;
    
    @Column(nullable = false, unique = true)
    private String email;
    
    // getters, setters, constructors
}

// Repository
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByEmail(String email);
}

// Service
@Service
public class UserService {
    
    private final UserRepository userRepository;
    
    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
    
    public List<User> findAll() {
        return userRepository.findAll();
    }
    
    public User findById(Long id) {
        return userRepository.findById(id)
            .orElseThrow(() -> new RuntimeException("User not found"));
    }
    
    public User save(User user) {
        return userRepository.save(user);
    }
}

// Controller
@RestController
@RequestMapping("/api/users")
public class UserController {
    
    private final UserService userService;
    
    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }
    
    @GetMapping
    public List<User> getAllUsers() {
        return userService.findAll();
    }
    
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.findById(id);
    }
    
    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.save(user);
    }
}

练习 2:多个实现选择 ​

java
public interface MessageService {
    void send(String message);
}

@Component("emailService")
public class EmailService implements MessageService {
    @Override
    public void send(String message) {
        System.out.println("Email: " + message);
    }
}

@Component("smsService")
public class SmsService implements MessageService {
    @Override
    public void send(String message) {
        System.out.println("SMS: " + message);
    }
}

@Service
public class NotificationService {
    
    @Autowired
    @Qualifier("emailService")
    private MessageService messageService;
    
    public void notify(String message) {
        messageService.send(message);
    }
}

练习 3:配置类 ​

java
@Configuration
public class AppConfig {
    
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
    
    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
        return mapper;
    }
}

@Service
public class ExternalApiService {
    
    private final RestTemplate restTemplate;
    
    @Autowired
    public ExternalApiService(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }
    
    public String fetchData() {
        return restTemplate.getForObject("https://api.example.com/data", String.class);
    }
}

返回第一章概览

用心记录每一步成长