让我检查一下修改后的代码是否正确应用,以及是否还有其他问题。
**已查看文件** *UserDaoImpl.java*
我看到代码还没有修改!第 27 行仍然是 `System.in`,这就是问题所在。
**请按照以下步骤操作:**
1. 修改 UserDaoImpl.java
将第 27 行的 `System.in` 改为 `in`:
```java
// ... existing code ...
public class UserDaoImpl implements UserDao {
@Override
public List<String> findAll() {
InputStream in = this.getClass().getClassLoader().getResourceAsStream("user.txt");
// 之前代码自动生成了System.in,会等待控制台输入,如果没有输入,就会一直等待
ArrayList<String> lines = IoUtil.readLines(in, StandardCharsets.UTF_8, new ArrayList<>());
return lines;
}
}
```
**关键修改:第 27 行从 `System.in` 改为 `in`**
2. 同时修改 UserController.java
移除手动创建对象的代码,让 Spring 自动注入:
```java
package com.itheima.controller;
import com.itheima.pojo.User;
import com.itheima.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/list")
public List<User> list() throws Exception {
List<User> userList = userService.findAll();
return userList;
}
}
```
3. 为 UserServiceImpl 添加 @Service 注解
```java
package com.itheima.service.impl;
import com.itheima.dao.UserDao;
import com.itheima.dao.impl.UserDaoImpl;
import com.itheima.pojo.User;
import com.itheima.service.UserService;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class UserServiceImpl implements UserService {
private UserDao userDao = new UserDaoImpl();
@Override
public List<User> findAll() {
List<String> lines = userDao.findAll();
List<User> userList = lines.stream().map(line -> {
String[] parts = line.split(",");
Integer id = Integer.parseInt(parts[0]);
String username = parts[1];
String password = parts[2];
String name = parts[3];
Integer age = Integer.parseInt(parts[4]);
LocalDateTime updateTime = LocalDateTime.parse(parts[5], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
return new User(id, username, password, name, age, updateTime);
}).collect(Collectors.toList());
return userList;
}
}
```
4. 重启应用
修改完成后:
-
**停止**当前运行的应用
-
**重新编译**项目(IDEA 中点击 Build → Rebuild Project)
-
**重新启动** SpringBootWeb01Application
**问题原因总结:**
-
`System.in` 是标准输入流,会一直等待控制台输入,导致请求阻塞
-
应该使用 `in`(文件输入流)来读取 user.txt 文件的内容
修改后就能正常访问了!