我创建了一个实现ServletContextAttributeListener
没有默认构造函数的类和容器抱怨:为什么ServletContextAttributeListener需要默认构造函数?
严重:错误配置..... java.lang.InstantiationException的应用听众:......
所以我创建了一个默认构造函数,除了参数化构造函数,并且一切正常。由于容器需要一个默认构造,我怀疑容器正在创建一个新的类实例,而不是使用已经创建的实例。但插入静态对象计数器成员数据,我发现这种怀疑是真实的。
我的问题是:如果我想更新我的对象的成员数据ServletContextAttributeEvent
,我可以以线程安全的方式吗?容器创建一个新对象有什么副作用,以及有哪些解决方法?
不应该属性有非默认构造函数吗?通过setter方法设置属性成员数据是否是最佳实践? –