小编Pet*_*ann的帖子

Java - 我应该使用常量来记录日志消息吗?

关于表单的快速问题.

我正在记录各种错误消息,我想知道是否应该在日志调用中为消息创建一个新字符串,或者在我用来存储其他字符串常量的接口中创建一个常量字符串,然后引用它.我使用的是代码分析器代码,它提到了后者说更好的做法是创建一个字符串常量并引用它,即使字符串只使用一次.我只是想知道这是否确实如此?

提前致谢

java compiler-construction string logging

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

使用自定义分隔符生成具有弹簧引导的DDL

我想使用带有JPA - Hibernate 5.0.11的spring boot v1.4.3生成create和drop ddl脚本.

我找到的大多数答案都使用了javax.persistence.schema-generation属性.例如/sf/answers/2587649361/

这种方法的问题是它输出没有分隔符的sql语句.例如

create table ... (...)
create table ... (...)
Run Code Online (Sandbox Code Playgroud)

我希望它用分隔符输出语句 ;

create table ... (...);
create table ... (...);
Run Code Online (Sandbox Code Playgroud)

但我找不到任何javax.persistence.schema-generation属性来配置它.

所以我想使用SchemaExportfrom hibernate,因为你可以设置delimiter属性.但要创建一个SchemaExport我需要一个MetadataImplementor(非删除的api).

我无法弄清楚如何MetadataImplementor从春季靴子中获得一个.

有没有人知道是否有

  • javax.persistence.schema-generation用于定义分隔符的属性
  • 或者如何创建SchemaExport(获取依赖项)
  • 还是有其他解决方案?

这是您可以使用的一些代码

@SpringBootApplication
@ComponentScan(basePackageClasses = Application.class)
@EntityScan(basePackageClasses = User.class)
public class Application {

    @Bean
    public ApplicationRunner getApplicationRunner() {
        return new ApplicationRunner() {

            public void run(ApplicationArguments args) throws Exception …
Run Code Online (Sandbox Code Playgroud)

ddl spring hibernate spring-data-jpa spring-boot

7
推荐指数
2
解决办法
2909
查看次数

当读取器发生异常时,不会调用Spring Batch SkipListener

这是我的步骤配置.我的跳过侦听器onSkipInWrite()方法被正确调用.但onSkipInRead()没有被调用.我故意从读者那里抛出空指针异常,从而发现了这一点.

<step id="callService" next="writeUsersAndResources">
        <tasklet allow-start-if-complete="true">
            <chunk reader="Reader" writer="Writer"
                commit-interval="10" skip-limit="10">
                <skippable-exception-classes>
                    <include class="java.lang.Exception" />
                </skippable-exception-classes>
            </chunk>
            <listeners>
                <listener ref="skipListener" />
            </listeners>
        </tasklet>
    </step>
Run Code Online (Sandbox Code Playgroud)

我读了一些论坛,并在两个级别上互换了listeners-tag:在chunk内部,在tasklet之外.没有什么工作......

在这里添加我的跳过侦听器

package com.legal.batch.core;

import org.apache.commons.lang.StringEscapeUtils;
import org.springframework.batch.core.SkipListener;
import org.springframework.jdbc.core.JdbcTemplate;


public class SkipListener implements SkipListener<Object, Object> {


    @Override
    public void onSkipInProcess(Object arg0, Throwable arg1) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onSkipInRead(Throwable arg0) {
    }

    @Override
    public void onSkipInWrite(Object arg0, Throwable arg1) {
}

}
Run Code Online (Sandbox Code Playgroud)

专家请建议

spring spring-batch

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

Java序列化是缩小内存占用的工具吗?

Java中的序列化总是必须缩小用于保存对象结构的内存吗?或者是有可能的是序列化将有更高的费用?

换句话说:序列化是一种缩小Java中对象结构内存占用的工具吗?


编辑
我完全知道序列化的目的是什么,但无论如何,谢谢:-)但是你知道,工具可能被误用.我的问题是,它是否是减少内存使用量的好工具.

那你可以想象出什么原因,为什么内存使用应该增加/减少?在大多数情况下发生什么?

java memory performance serialization

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

Spring Batch中的块读取 - 不仅是块写入

我的假设

在我的理解中,Spring Batch中的"面向块的处理"帮助我在单个事务中有效地处理多个项目.这包括有效使用外部系统的接口.由于外部通信包括开销,因此它应该是有限的并且也是面向块的.这就是为什么我们有提交级别的原因ItemWriter.所以我没有得到的是,为什么ItemReader仍然必须逐项阅读?为什么我也不能读块呢?

问题描述

在我的步骤中,读者必须调用web服务.作者将此信息发送到另一个Web服务.这就是为什么我不想做必要的电话.

接口ItemWriter是面向块的 - 正如您所知道的那样:

public abstract void write(List<? extends T> paramList) throws Exception;
Run Code Online (Sandbox Code Playgroud)

但事实ItemReader并非如此:

public abstract T read() throws Exception;
Run Code Online (Sandbox Code Playgroud)

作为一种解决方法,我实现了一个ChunkBufferingItemReader读取项目列表的方法,存储它们并在read()调用方法时逐个返回项目.

但是当谈到异常处理和现在重新开始工作时,这种方法变得混乱.我感觉我在这里工作,框架应该为我做.

我错过了什么吗?Spring Batch中是否存在任何现有功能?

另一篇文章中,建议将a的返回类型更改ItemReader为a List.但是我ItemProcessor必须从单个输入发出多个输出.这是正确的方法吗?

我对任何最佳实践都很优雅.提前致谢 :-)

chunking spring-batch

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

多态模糊区分如何工作?

鉴于我有一个包含两个构造函数的类:

public class TestClass {
    ObjectOne o1;
    ObjectTwo o2;

    public TestClass(ObjectOne o1) {
        // ..
    }

    public TestClass(ObjectTwo o2) {
        // ..
    }
}
Run Code Online (Sandbox Code Playgroud)

请假设,这ObjectOne是一种interface类型,并且ObjectTwo implements ObjectOne.如果我打电话,会发生什么:

new TestClass(null);
Run Code Online (Sandbox Code Playgroud)

如何确定调用的正确方法?谁决定了?Java和其他OOP语言之间是否存在差异?

java oop polymorphism overloading

4
推荐指数
2
解决办法
628
查看次数

在握手期间收到close_notify

我在所有18台服务器上配置了SSL(HTTPS).所有18台服务器都使用SSL进行通信.一切都很好.突然间我收到了这个错误:

"在握手期间收到close_notify"

LOG :: @ 2011-06-03 03:36:17.372 [Log.class]![LoadBalancer] [com.somename.servlet] [RequestServlet] [callServlet] ==> [spnlapp01390.europe.intranet:8443/TCServer/TCHealthCheck] - >原因:握手期间收到close_notify#3996073076

奇怪的是应用程序重启后,它的工作正常.我不知道这个原因.在哪种情况下会发生这种情况?这是因为网络问题吗?

ssl

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

JSF跳过阶段 - 如何调试?

我正在调试一个外部JSF应用程序.问题是,我提交了一份表格,但价值没有结转.

使用阶段监听器,我可以看到生命周期没有完全运行,所以说它跳过阶段2 -5:在恢复视图阶段之后,直接调用渲染响应阶段.我想念应用值,验证,更新模型操作等等.

因此,这可能是一个鸡与蛋的问题:1.不会调用负责阶段,因此新表单输入无法结转.2.系统无法识别任何新输入,因此在恢复视图后直接渲染.

我检查了没有调用responseComplete()或者renderResponse()的调用.

我不知何故被卡住了.有任何想法验证两个假设之一吗?或者如何调试一般?有没有人有类似的问题?


更新

我怀疑,JSF不知道回发请求,并像初始视图一样处理它.这可以解释,我只通过了第1阶段和第6阶段.

如果JSF将此识别为非面部请求,我该如何检查?
如果当前有适当的treeID,我该如何检查facesContext.

jsf skip phase

3
推荐指数
1
解决办法
3287
查看次数

JPA将主键和外键保存在一起

我有两个实体DealEntity,DealTypeEntity 并且他们是相关的 -

@Entity
class DealEntity{
  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "DEAL_TYPE_ID")
  private DealTypeEntity dealTypeEntity;
}
Run Code Online (Sandbox Code Playgroud)

我试图通过创建包含DealTypeEntity ref的DealEntity实例来保存.

我正在使用JPA,它给了我例外 entityManager.persist(entity)

     Oct 17, 2013 3:36:34 PM org.apache.catalina.core.StandardWrapperValve invoke
     SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path             [/Travel-Portal] threw exception [Request processing failed; nested exception is          org.springframework.dao.InvalidDataAccessApiUsageException:org.hibernate.TransientPropertyV alueException: object references an unsaved transient instance - save the transient  instance before flushing: training.impetus.tp.model.DealEntity.dealTypeEntity ->  training.impetus.tp.model.DealTypeEntity; nested exception is  java.lang.IllegalStateException: org.hibernate.TransientPropertyValueException: object  references an unsaved transient instance - save the …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

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

RegEx - 从匹配中排除char序列

我正在使用RegEx,并希望在这里找到一些指导.我已经在这里和Google上搜索过,但我很难找到合适的条款.我可以想象非捕获组会帮助我,但我不知道如何应用它们.

基本上我想找到Java单行评论,这是"尖叫"(没有小写字母):

^[ \t]*//[^a-z]+?$
Run Code Online (Sandbox Code Playgroud)

现在我也找到这样的评论:

// PN-123456 
// ITK 12345
//IT-12345
Run Code Online (Sandbox Code Playgroud)

这些评论对我有效,所以我想将它们从上面的RegEx中排除.它始终是这种模式:

  1. 可选的空格
  2. "PN"或"IT"或"ITK"
  3. 连字符,空白或什么都没有
  4. 四到六位数
  5. 可选的空格

这是我对这种模式的处理方法:

[ ]?PN[ -]?[0-9]{1,6}
Run Code Online (Sandbox Code Playgroud)

但现在我无法在一个RegEx中将两个表达式联合起来.这怎么样?

TIA,彼得

java regex

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