当前位置: 首页 > 知识库问答 >
问题:

防止为@瞬态字段生成getter/setter

殳飞扬
2023-03-14

Spring Roo有一个@RooJavaBean注释,它为非瞬态字段生成AsheJ getter和setter。问题是它也为瞬态字段生成它们。我在Asset.java中有这个:

@Transient
private Logger log = Logger.getLogger(this.getClass());

我有以下Asset_Roo_JavaBean.aj:

public Logger Asset.getLog() {
    return this.log;
}

public void Asset.setLog(Logger log) {
    this.log = log;
}

即使一个字段是暂时的,我想您仍然可以使用getter和setter访问它,但是为什么文档会对gettersByDefault注释字段这样说呢

是否为此类中声明的每个非瞬态字段生成getter(默认为true)

有没有其他方法可以阻止它在瞬态字段上生成方法,从而将它们视为私有属性?

共有1个答案

霍鸣
2023-03-14

您使用的是哪个版本的Spring Roo?根据ROO-3426发布的JIRA条目,应使用版本<代码>1.2.5修补该错误。释放。

1)我建议升级您的Roo,它应该可以解决问题。

2)确保检查是否导入了javax。坚持不懈瞬态

 类似资料:
  • 我有一个用Lombok@data注释的类。 除了一个用JPA@transient注释的字段外,所有字段都生成setter。 如何强制生成此字段的设置器?

  • 问题内容: 为什么Java有瞬态字段? 问题答案: 在中关键字用于指示字段不应该是系列化的一部分(这意味着保存,像一个文件)的过程。 从Java语言规范,Java SE 7中版,第8.3.1.3节。transient领域: 可以标记变量transient以指示它们不是对象持久状态的一部分。 例如,你可能具有从其他字段派生的字段,并且仅应以编程方式进行操作,而不要通过序列化来保持状态。 这是一个包含

  • 是否有方法序列化类的瞬态字段?文档中提到默认情况下不支持它,但是否有办法打开它? 非常感谢

  • 问题内容: 以下代码抛出。 这是输出: 怎么可能为空? 问题答案: 以下是有关瞬时变量的一些事实: - 当在实例变量上使用Transient关键字时,将 防止该实例变量被序列化。 - 在反序列化时,瞬态变量将恢复为其 默认值 ..... 例如: 对象引用变量 诠释为 boolean to etc ....... 所以这就是您反序列化时得到a的原因…

  • 问题内容: 选项: A.因为Foo实现了Serializable,所以可以序列化Foo的实例。 B. Foo的实例无法序列化,因为Foo包含不可序列化的实例变量v3。 C.如果将v3标记为瞬态,则Foo的实例是可序列化的。 D.b和c 答案:D 说明:即使对象的类实现了,也可能无法序列化,因为它可能包含不可序列化的实例变量。 现在我的问题是: 据我所知,transient 用于关闭序列化。那么在这

  • 问题内容: 在Java中进行序列化后,是否可以将字段设置为任何非默认值?我的用例是一个缓存变量- 这就是为什么。我也有一个习惯,即不要更改字段(即,地图的内容已更改,但对象本身保持不变)。但是,这些属性似乎是矛盾的- 尽管编译器允许这样的组合,但除反序列化之后,我无法将字段设置为任何值。 我尝试了以下操作,但没有成功: 简单的字段初始化(如示例所示):这是我通常所做的,但是在未序列化之后似乎没有发