undertow.devMode=true 的时候,会导致单例失效,创建两个对象
代码信息如下
单例对象
public enum LocalManager {
INSTANCE;
private final Map<String, Body> personMap = new ConcurrentHashMap<>();
private final OrganDataBasket<DataBean> dataBasket = new OrganDataBasket<>();
public void addPerson(Body body) {
personMap.put(body.getName(), body);
System.out.println(body);
System.out.println(personMap.size());
}
public Body findBody(String name) {
return personMap.get(name);
}
}Controller
@Path(value = "/", viewPath = "/index")
public class LocalController extends Controller {
public void index() {
Body body = LocalManager.INSTANCE.findBody("tai2");
List<MsgParam> allMsg = body.getBrain().getAllMsg();
set("allMsg", allMsg);
render("index.html");
}
}启动代码
public class SmallLauncher {
public static void main(String[] args) {
Body tai2 = new Body("tai2",false);
LocalManager.INSTANCE.addPerson(tai2);
UndertowServer.start(LocalConfig.class);
}
}undertow.devMode=true 的时候,会导致创建两个LocalManager对象
![14729_20240202214540.png PH6Z3{UQO2P@]6F%4R`C]H2.png](/upload/img/feedback/1/14729_20240202214540.png)
![14729_20240202214648.png AVISUCD1[LON{M{4LZF(]2K.png](/upload/img/feedback/1/14729_20240202214648.png)
undertow.devMode=fale 的时候,只会创建一个LocalManager对象
![14729_20240202214856.png `L]{0`}D_IQ6}F]7SHCDDLN.png](/upload/img/feedback/1/14729_20240202214856.png)
![14729_20240202214931.png R5ZEFQ`AJGA(P_U(34Z3]`R.png](/upload/img/feedback/1/14729_20240202214931.png)
可以确定是开启热部署 HotswapWatcher功能引起的
还望波总关注一下
将 LocalManager 那段代码想办法挪到项目内部的某个地方调用