- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想为我的持久实体带来依赖注入(inject),但我不确定如何做到这一点。
我的 GWT 应用程序中的加盐哈希算法需要 Base64 实现。 GWT 附带旧版本的 commons-codec。由于名称冲突——我不使用 Maven——我可以弄清楚如何使用旧版本或使用另一种实现,例如 Base64.iharder.net。
在调整了几个备选方案之后,我为每个备选方案创建了一个接口(interface)和适配器类。我注入(inject)了一个实现。这似乎是一个经典的用例。
创建持久实体后,一切都运行良好。然而,在存储和检索它们之后,先前注入(inject)且未持久化的字段被实例化为空值。
这个问题很有意义。我使用 DataNucleus,它添加了一个无参数构造函数。 DataNucleus 不会再次注入(inject)依赖项。
从数据存储中检索对象时,如何要求我的持久性框架重新注入(inject)依赖项?
谢谢你。
// salted hash for password storage
@PersistenceCapable
public class SaltedHash implements Serializable {
private static final long serialVersionUID = 1L;
private String salt;
private String hash;
@NotPersistent
private final Base64Codec base64Codec;
@NotPersistent
private final Sha265Hash sha256Hash;
@NotPersistent
private final Random random;
@Inject
public SaltedHash(Base64Codec b64, Sha256Hash sha256, Random rnd) {
base64Codec = b64;
sha256Hash = sha256;
random = rnd;
}
public void setSecret(String secret) {
salt = base64Codec.encode(generateSalt());
hash = base64Codec.encode(sha256Hash.hash(salt + secret));
}
public boolean matches(String secret) {
String maybe = base64Codec.encode(sha256Hash.hash(salt + secret));
return hash.equals(maybe);
}
private byte[] generateSalt() {
// use random to generate a salt
}
}
最佳答案
持久实体的生命周期通常与托管 bean 的生命周期分离。这就是为什么不鼓励在 JPA 托管实体中使用 DI/CDI 的原因。
According to this definition, JPA entities are technically managed beans. However, entities have their own special lifecycle, state and identity model and are usually instantiated by JPA or using new. Therefore we don't recommend directly injecting an entity class. We especially recommend against assigning a scope other than @Dependent to an entity class, since JPA is not able to persist injected CDI proxies.
How can I ask my persistence framework to re-inject the dependencies when retrieving the object from the data store?
关于dependency-injection - 你可以在持久实体中使用依赖注入(inject)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11638311/
如果我有一个包含 debian/control 和 Build-Depends 条目的 Depends 文件。 如何安装两组依赖项? 目前我正在使用以下命令创建一个依赖于 Build-Depends
我一直在查看衬底节点模板的Cargo.toml文件,并注意到,对于大多数 crate 而言,其依赖性如下所示: [dependencies.grandpa] package = 'sc-finalit
我在 Netbeans 7.1 IDE 中有一个 Maven 项目。 我想为 Dependencies 添加相同的依赖项和 Test Dependencies . 添加到一个中会将其从另一个中删除。
我正在尝试解决此处描述的问题: http://www.jayway.com/2013/04/12/solving-asm-conflicts-after-upgrading-to-groovy-2-1
我研究过这个问题,但找不到共识。如果“A 依赖于 B”,术语“依赖性”指的是: 一个 B A和B的关系 这个术语在计算机技术的不同子领域中是否有不同的含义? 最佳答案 B 将是依赖项。您可能会以“B
WebLogic 10.3.6Java 1.6 所以我在使用 Eclipse 时遇到了 XML 问题。 7天前我去度假之前,这一切运行良好。事实上,在我离开之前,我恢复到了旧版本,因为我在一些不太重要
在问这个问题之前,我想说 this stackoverflow 中的问题与我的问题非常相似,但概念仍然不清楚,非常困惑。 我想了解依赖倒置原则,但我无法完全理解它? 下面是DIP说的两点 A. Hig
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .
我正在尝试使用 apache maven 创建一个包。当我运行 mvn clean install 命令时,出现以下错误: dependencies.dependency.version' is mi
在 Real World Ocaml Chapter 9这是关于仿函数的: Dependency injection Makes the implementations of some compone
我已经构建了类似用于创建网站的基本模板/工作流的东西,主要使用 Grunt。 该模板的一部分是 Modernizr 特征检测库,我的一项 Grunt 任务依赖于它。 目前我只是将该依赖项存储在我的 b
我有固定依赖项的 python 项目。由于第三方依赖项中的错误,在我的包中发现了错误。该依赖项已发布修复该错误的补丁。然而,根据 semantic versioning ,是否为固定依赖项的每个补丁版
使用插件io.spring.dependency-management ,我的依赖的一些版本是从其他依赖中扣除的 id("io.spring.dependency-management") versi
我有这两个表“员工表,从属表” 员工表有“ID, employee_id, employee_name” 从属表有“ID, employee_id, dependent_name, relations
我正在使用 Eclipse 中的一个 mavenised java 项目,其中有几个模块无法构建并从 pom 文件中抛出错误: Project build error: 'dependencies.d
我有一个包含多个模块的 maven 项目。在 Eclipse(Juno,带有 m2e)中,它似乎编译得很好。但是当我在其中一个模块上进行 maven 安装时,构建会立即失败。 父 pom: com
我使用 eclipse juno 创建了一个 maven 项目并编辑了 pom 文件。当我通过“mvn clean install”使用命令提示符运行 pom 文件时,出现此错误。 [ERROR] T
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
似乎包括与 provided 的直接依赖关系范围很好理解。似乎还包括带有 runtime 的传递依赖项。范围也很容易实现。 但是我如何才能包含两个间接级别的依赖项? 例子: A --> B --> C
我有以下情况: 我想在我的另一个项目中使用我的一个项目(托管在 bintray.com 上)。 我设置了一个 Maven 存储库,上传了 Artifact 和 pom 文件,然后能够使用上传到 bin
我是一名优秀的程序员,十分优秀!