关于表单的快速问题.
我正在记录各种错误消息,我想知道是否应该在日志调用中为消息创建一个新字符串,或者在我用来存储其他字符串常量的接口中创建一个常量字符串,然后引用它.我使用的是代码分析器代码,它提到了后者说更好的做法是创建一个字符串常量并引用它,即使字符串只使用一次.我只是想知道这是否确实如此?
提前致谢
我想使用带有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) 这是我的步骤配置.我的跳过侦听器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)
专家请建议
Java中的序列化总是必须缩小用于保存对象结构的内存吗?或者是有可能的是序列化将有更高的费用?
换句话说:序列化是一种缩小Java中对象结构内存占用的工具吗?
编辑
我完全知道序列化的目的是什么,但无论如何,谢谢:-)但是你知道,工具可能被误用.我的问题是,它是否是减少内存使用量的好工具.
那你可以想象出什么原因,为什么内存使用应该增加/减少?在大多数情况下会发生什么?
在我的理解中,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必须从单个输入发出多个输出.这是正确的方法吗?
我对任何最佳实践都很优雅.提前致谢 :-)
鉴于我有一个包含两个构造函数的类:
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语言之间是否存在差异?
我在所有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
奇怪的是应用程序重启后,它的工作正常.我不知道这个原因.在哪种情况下会发生这种情况?这是因为网络问题吗?
我正在调试一个外部JSF应用程序.问题是,我提交了一份表格,但价值没有结转.
使用阶段监听器,我可以看到生命周期没有完全运行,所以说它跳过阶段2 -5:在恢复视图阶段之后,直接调用渲染响应阶段.我想念应用值,验证,更新模型操作等等.
因此,这可能是一个鸡与蛋的问题:1.不会调用负责阶段,因此新表单输入无法结转.2.系统无法识别任何新输入,因此在恢复视图后直接渲染.
我检查了没有调用responseComplete()或者renderResponse()的调用.
我不知何故被卡住了.有任何想法验证两个假设之一吗?或者如何调试一般?有没有人有类似的问题?
我怀疑,JSF不知道回发请求,并像初始视图一样处理它.这可以解释,我只通过了第1阶段和第6阶段.
如果JSF将此识别为非面部请求,我该如何检查?
如果当前有适当的treeID,我该如何检查facesContext.
我有两个实体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) 我正在使用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中排除.它始终是这种模式:
这是我对这种模式的处理方法:
[ ]?PN[ -]?[0-9]{1,6}
Run Code Online (Sandbox Code Playgroud)
但现在我无法在一个RegEx中将两个表达式联合起来.这怎么样?
TIA,彼得
java ×5
hibernate ×2
spring ×2
spring-batch ×2
chunking ×1
ddl ×1
jpa ×1
jsf ×1
logging ×1
memory ×1
oop ×1
overloading ×1
performance ×1
phase ×1
polymorphism ×1
regex ×1
skip ×1
spring-boot ×1
ssl ×1
string ×1