小编Pre*_*hev的帖子

在Spring中设计一个点系统

我的数据库中已有很多现有数据,并希望开发一种点机制,根据每个用户的操作计算每个用户的分数.

我以可插入的方式实现此功能,因此它独立于主逻辑,并且在实体被修改后依赖于发送的Spring事件.

问题是如何处理现有数据.我不想从现在开始收集积分,而是包括所有数据,直到现在.

最实用的方法是什么?我是否应该以提供index()方法的方式设计我的插件,这将强制我的系统从数据库中获取每个单独的实体,发送EntityDirtyEvent,为每个插件触发每个插件,然后更新它,让点被保存在每个实体旁边.这可能会导致很多开销,对吧?

最简单的方法是创建一个复杂的存储过程,然后使index()调用该存储过程.然而,在我看来,这似乎也是一件坏事.既然我必须编写用于计算java中的点的逻辑,为什么还要在SQL中再次使用它?此外,一般而言,我不喜欢将业务逻辑分成不同的层.

有没有人这样做过?请帮忙.

java spring hibernate achievements

6
推荐指数
1
解决办法
711
查看次数

在常见的服务器环境中使用Spring和php的优点

我建议的可能听起来很奇怪,但我有我的理由.

很长一段时间,我们已经有了这个基于Spring的API,它起源于CRUD功能的一组抽象REST服务.然而,随着时间的推移,我们开始构建业务和表示层,直到我们达到死胡同状态.不要误解我的意思,Spring/Hibernate是很棒的框架,构建在JVM之上有其明显的优势,包括性能优于其他Web技术,如PHP.与PHP相比,它为我们提供了更深入的控制方式,如事务处理,多线程处理,处理字节数据,控制本机C++应用程序,使用JNI等.

堆栈明显碰到硬墙的地方,是需求最常变化的地方,即业务层和表示层.将应用程序转变为现代的,以用户为中心的社交应用程序,我们经历了职业生涯中最严峻的挑战.Java EE演示技术难以使用.此外,由于构建测试和部署大型Java应用程序的传统障碍,改变业务需求变得非常漫长.

它也感觉在很大程度上,我们正试图重新发明轮子.在PHP的世界里,已经存在这么多的项目,给你一个完整的管理体系,不可知的任何类型的后端系统(映射挂钩REST/SOAP终点).他们中的许多人已准备好所有这些功能,允许管理员友好地改变各种各样的情况,规则,模板等.另外,基于PHP意味着绝对没有时间浪费在构建和部署上.写下变更,测试,确认它有效,并切换.

我们的想法是,现在要找到一个方法来移动在这样一种正面服务器的基于PHP的应用程序的业务和表示层,并留下纯后端的东西春/休眠.我们有一些担忧,来自我们对Spring的相对缺乏经验.

  1. 如果我们使用PHP方法实现业务方法,我们如何保持事务安全性?我的意思是,如果一个业务方法必须向JAVA发出三个单独的HTTP请求,那么我们怎样才能保证它们都将在同一个事务中执行,DB-wise?

  2. 有没有办法在两个系统之间使用代理或承诺对象?例如,如果PHP业务方法需要调用Spring搜索方法从数据库中获取对象的集合,然后将其传递给另一个spring方法,这将意味着必须来回传送整个集合.或许,我们可以将其存储在Java侧会话对象,并简单地发送一个空的代理回到前端,其前端能够低音回到另一个JAV方法.

  3. 我们很多基于Spring的功能都依赖于使用Spring事件的插件结构.我们如何才能使我们的前端服务器在每个发生的ackend事件上得到通知.我在这里有两个想法:一个后处理过滤器,它只是使用一些命名约定向前端服务器上的控制器发出POST请求.或者...使用某种消息队列,例如JMS或RabbitMQ,或者为什么甚至不能像Reddis那样可以观察数据的变化

谁曾经这样做过?总的来说这是个好主意吗?有任何建议如何解决上述问题?

php spring hibernate jms java-ee

6
推荐指数
1
解决办法
754
查看次数

使用下划线的_.extend(...)而不覆盖某些目标的成员

我希望能够使用下划线的extend功能并实现一个特定的案例.默认情况下,extend使用源的成员覆盖目标的任何现有成员.我的问题是我想保持目的地和源的初始化方法完好无损,所以我做的大致是:

addComponent: function(comp, init) {
   var iF;
   if (comp.initialize) {
       iF = comp.initialize;
       delete comp["initialize"];
   }

   _.extend(this,comp);

   if (iF) {
       comp.initialize = iF;
       comp.initialize.call(this,init);
   }

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

这是正确的方法吗 - 通过分离和重新连接?我的意思是,我想保持下划线完整,我不想用任何方法扩展它,因为这是一个非常具体的情况.你发现任何潜力吗?

javascript underscore.js

5
推荐指数
2
解决办法
1万
查看次数

避免从骨干视图中重新渲染图像和其他内容

当我重新渲染骨干视图时,跳过重新渲染图像和谷歌地图之类的东西的好方法是什么?每次重新渲染视图时,我的照片和地图视图都会变得非常糟糕(这种情况经常发生).特别是图像,模板引擎从头开始布局布局,这使得图像标签再次从服务器或缓存中获取位图.

当然,我仍然希望视图对布局保持一种不可知性,所以从技术上来说它不应该知道我们要显示图像,对吧?

javascript backbone.js

5
推荐指数
1
解决办法
1836
查看次数

@IndexedEmbedded 在延迟加载的实体列表上,不会自动进入搜索索引

我有一个问题,我认为应该很容易解决。

我使用 Hibernate Search 来索引与其他实体有关系的 @Entitiy 类。

每当一个实体指向另一个也应该被索引的实体时,比如上传特定照片的用户,我使用@IndexedEmbedded,它与 HSearch 的自动索引工作得非常好。

但是,我还在 @ManyToOne 关系上设置了一些 @IndexedEmbeded 注释。想象一张有相关评论列表的照片。这些默认情况下是延迟加载的,即在实际需要之前不会从数据库中获取。我注意到当我添加评论时,无论过了多久,它都不会被索引,直到我手动重新索引。然后一切正常。我没有在我拥有的任何其他 IndexedEmbedded 关系中观察到这一点,例如,如果我更改照片的位置,几分钟后,它就会进入索引并且完全可以搜索。

有什么解释吗?解决方案?

lucene spring hibernate hibernate-search

5
推荐指数
1
解决办法
800
查看次数

5
推荐指数
1
解决办法
876
查看次数

如何从单独的Jar中加载@Configuration类

我有一个SpringBoot主应用程序,还有一个单独的Maven模块项目,可以作为单独的Jar进行编译。该模块具有一个Spring config类@Configuration,该类带有批注,我希望在主应用程序加载时进行加载。

显然,这并不是开箱即用的(仅将模块包含在主应用程序中)。我还需要做什么,才能使模块配置类也被主应用程序加载?

java spring spring-boot

5
推荐指数
2
解决办法
5430
查看次数

在Java中被泛型混淆

任何人都可以解释为什么下面的代码编译?

List<Long> longNums = new ArrayList(Arrays.asList("one", "two", "three"));
Run Code Online (Sandbox Code Playgroud)

是否由于类型擦除?

如果我有以下方法:

public <T> T readProperty(String propName, Class<T> type);
Run Code Online (Sandbox Code Playgroud)

我怎样才能确保它会返回,说一个List<Long>而不是一个List<String>?显然,在调用方法的类型我只能提供List.class和祈祷.

//run and pray
List<Long> longNums = readProperty("prop", List.class);
Run Code Online (Sandbox Code Playgroud)

我已经想到这样一个方法错误地将一个String对象列表分配给一个长号列表,直到我运行它,我才看到了ClassCastException.

java generics

5
推荐指数
2
解决办法
148
查看次数

使用Gradle创建"fat-JAR"时会覆盖log4j.properties

我的一个Java项目导出可执行部署的可执行"fat-JAR"文件.要使用Gradle创建JAR文件,我按照此处描述的说明操作:

task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': '<HUMAN_READABLE_TITLE_OF_YOUR_PACKAGE>',  
            'Implementation-Version': version,
            'Main-Class': '<PATH_TO_THE_MAIN_APPLICATION_CLASS>'
    }

    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}
Run Code Online (Sandbox Code Playgroud)

所示的任务将递归地通过依赖树,如果需要解压缩JAR,并将所有内容压缩在一起.到目前为止唯一的问题是我的一些依赖项带有自己的log4.properties文件,最终会覆盖我自己编写的文件.它们都位于相应的资源中folders,因此当文件合并在一起时,后面的文件似乎会覆盖之前添加的文件.

到目前为止,我找到的唯一解决方案是使用命令行参数手动设置正确文件的路径.我最终希望能够执行JAR本身,而无需额外的开销.

什么是保持我log4.properties和排除其他人被添加到包中的好方法?

java log4j jar gradle

5
推荐指数
1
解决办法
420
查看次数

如何在阶段管道视图中显示更多信息?

有没有办法在每个阶段的框中显示某些环境变量和构建参数?这可能吗?

jenkins jenkins-plugins jenkins-pipeline

5
推荐指数
1
解决办法
1474
查看次数