我在Spring Beans很新,我正在尝试构建一个实现CRUD操作的Rest控制器。
我有一个配置文件,其中有一个@Bean返回图书类型列表:
@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"));
}
}
我在rest控制器中构造注入了上面的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方法中,我尝试将来自请求的书籍添加到我的书籍列表中,但我得到了Un支撑操作异常。
是不是不可能改变注入的集合,或者应该如何做?
如果这是为了教程的目的,我们可以再次用小步骤来实现这一点。
类将成为
//BadNamedCLass
DataManager {
private final List<Book> books = ArrayList<Book>();
{
// init block to add item to books if you want during initialization
}
// getters
//setters
}
配置变成:
@Configuration
public class BookConfig {
@Bean
public DataManager dataManager() {
return new DataManager();
}
}
控制器代码变成
...
@Autowired
public BookRestController(DataManager dataManager) {
this.dataManager= dataManager;
}
...
例外情况请点击此链接
问题内容: 在当前正在研究的学习项目中,我需要添加一个属性,其值为数字。 如果我创建自己的属性,说“ messid”并为其分配一个数字值,例如“ 12”,“ 6”等,可以吗? 这就是为什么我要这样做,以便如果我做错了,则可以纠正我:我需要在我的JavaScript中(使用jQuery)访问此数字。仅获取attribute的值很容易,但是从诸如“m12”或“ m6”之类的字符串中提取数字值很麻烦。(
问题内容: 我的问题是我想在遍历新元素的同时扩展一个包含新元素的列表,并且希望迭代器继续刚才添加的元素。 根据我的理解,会在列表中的当前元素之前而不是之后添加一个元素。是否可以通过其他方式实现这一目标? 问题答案: 除了以外,您无法在修改集合时使用进行迭代。 但是,如果使用方法,该方法返回,并对其进行迭代,则您还有更多要修改的选项。从javadoc中获取: 新元素插入到隐式光标之前:…后续调用将返
< code>list_of_lists=[[1,2,3],[4,5,6]] < br > < code > list _ to _ add =[" A "," B "," C"] 我希望结果是list_of_lists会变成: 谢谢!
我有一个熊猫数据框,其中一列由列表组成: 我想添加,例如,每个列表的第一个和最后一个索引。为此,我使用: 这分别作用于每一行,如果数据帧很大,这可能会非常密集。有没有办法将此操作矢量化?
问题内容: 我想避免。我该怎么办? 问题答案: 您可以在迭代本身期间使用支持remove / add方法的。
问题内容: 这个清单对象在咬我屁股。 每当我尝试向其中添加元素时,它都会产生以下结果: 产生错误的行无关紧要,但无论如何这里都是这样: 我不应该静态访问它吗? 变量的实际声明: 有任何想法吗?在Google上找不到任何值得的东西。 问题答案: Arrays.asList()将给您返回不可修改的列表,这就是为什么添加失败的原因。尝试使用以下方法创建列表: