小编Leo*_*eal的帖子

@EntityListeners注入+ jUnit测试

@EntityListeners在保存到Db之前和加载之后用来进行操作.在我的Listener类中,我调用了一个Ecryptor(需要从配置文件中获取信息),因此加密器不能静态调用,需要在我的Listener中注入.对?

好吧,EntityListeners中的注入不能马上完成,但你有一些方法可以做到这一点,比如使用SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);甚至是这里显示的方法.https://guylabs.ch/2014/02/22/autowiring-pring-beans-in-hibernate-jpa-entity-listeners/

很酷,问题是:没有一个解决方案支持单元测试!当运行我在模型中注入的加密器测试时,Listener始终是null.

这里SpringBeanAutowiringSupport不会在jUnit测试中注入bean有一个解决方案来创建这个上下文并传递给实例化的对象,但它没有解决我的问题,因为我有"注入"添加到它.

在我的测试中创建上下文的任何方式,并以某种方式将其传递给我的听众?如果没有,我可以用任何方式为我的加密器创建一个静态方法,并且仍然可以访问Environment API来读取我的属性吗?

包侦听器:

public class PackageListener{
   @Autowired
   Encryptor encryptor;

   @PrePersist
   public void preSave(final Package pack){
      pack.setBic(encryptor.encrypt(pack.getBic()));
   }
   ...
Run Code Online (Sandbox Code Playgroud)

我的考试

 @Test
 @WithuserElectronics
 public void testIfCanGetPackageById() throws PackageNotFoundException{
     Package pack = packagesServiceFactory.getPackageService().getPackage(4000000002L);
 }
Run Code Online (Sandbox Code Playgroud)

套餐服务

  public Package getPackage(Long id) throws PackageNotFoundException{
    Package pack = packageDao.find(id);

    if (pack == null) {
        throw new PackageNotFoundException(id);
    }

    return pack;
}
Run Code Online (Sandbox Code Playgroud)

加密:

public class Encryptor{
    private String salt;

    public Encryptor(String salt){
        this.salt …
Run Code Online (Sandbox Code Playgroud)

java junit dependency-injection spring-mvc entitylisteners

11
推荐指数
1
解决办法
1205
查看次数

Linkedin添加到个人资料(在新的个人资料设计中)

在过去的几个月里,我有一个Linkedin'添加到个人资料'按钮.Linkedin 为一些用户部署了一个新的配置文件设计,按钮不起作用文档也发生了变化,但它确实很差,并没有解释任何有关必需和可选参数的信息.

这对我来说也很难调试,因为我仍然有旧的配置文件,并且一切运行良好.

有帮助吗?

linkedin

7
推荐指数
1
解决办法
735
查看次数