【发布时间】:2021-09-23 11:33:00
【问题描述】:
我是 Spring Beans 的新手,我正在尝试构建一个实现 CRUD 操作的 rest 控制器。
我有一个配置文件,其中有一个 @Bean,它返回 Book 类型的列表:
@Configuration
public class BookConfig {
@Bean
public static List<Book> books() {
return Arrays.asList(
new Book(1, "ABC", "Author ABC"),
new Book(2, "DEF", "Author DEF"),
new Book(3, "GHI", "Author GHI"));
}
}
以及我在其中构造函数注入上述 Bean 的其余控制器:
@RestController
@RequestMapping("/api/v1/books")
public class BookRestController {
private List<Book> books;
@Autowired
public BookRestController(List<Book> books) {
this.books = books;
}
@PostMapping("")
public void registerBook(@RequestBody Book book) {
books.add(book); // this throws **UnsupportedOperationException**
}
}
在 POST 方法中,我尝试将来自请求的 book 添加到我的 books 列表中,但我得到 UnsupportedOperationException .
是否无法更改注入的集合或应该如何完成?
【问题讨论】:
-
Arrays.asList返回一个不可修改的集合。
标签: spring exception collections javabeans code-injection