我正在使用Spring Boot编写API,并且我有一个抽象控制器来保存多个控制器之间的共享逻辑。现在,我想添加一个warning
字段:
public abstract class BaseController<T> {
public List<String> warnings;
@RequestMapping(method = POST)
public Response create(HttpServletRequest request,HttpServletResponse response) {
warnings = new ArrayList<>();
if (something bad from T) {
warning.add("bad thing happens");
}
return createRespone(warnings);
}
({createReponse
被用来创建自定义响应)
我从中继承了几个不同的控制器
@RestController
@RequestMapping("/{area}/blah")
public class BlahController extends BaseController<Blah> {
}
对于warning
字段,它将被几个不同的子控制器共享,还是仅一个实例存在?如果controller A
和controller B
都继承自BaseController
并试图修改警告,那么线程安全吗?
答案 0 :(得分:0)
警告字段未共享。您的代码等效于:
#!/usr/bin/env sh
var="$(cat /dev/stdin)"
file=$(mktemp)
echo "$var" > "$file"
ip_address=$(head -1 "$file" | rev | cut -d ' ' -f1 | rev)
last_line=$(tail -1 "$file" | sed -E "s,^\|_, ,")
printf "%s%s\n" "$ip_address" "$last_line"
rm "$file"
控制器中的状态违反REST概念。