我有一个第三方域对象,我希望使用Jackson序列化为JSON.通过公共getter可以访问很多属性,但我只对这些属性中的一小部分感兴趣.由于这是第三方对象,我选择了mixin路线.但是,除了在mixin界面上定义的内容之外,我找不到从原始类中排除所有内容的好方法.我试图在mixin类上指定@JsonIgnoreProperties,但它很快就会失控,需要忽略大量属性.任何解决方法?
提前致谢!
编辑:添加一些代码
public class SpecialObject {
private String name;
private Integer id;
public String getName() {
return name;
}
public Integer getId() {
return id;
}
public String getFoo() {
return "foo";
}
}
public interface SpecialObjectMixin {
@JsonProperty
String getName();
}
Run Code Online (Sandbox Code Playgroud)
我希望我只能在序列化的JSON中获得名称.顺便说一下,我正在使用这个来通过cxf-jaxrs与杰克逊作为提供者进行休息.
我有一个新手问题.
interface Animal {
void partner(Animal other);
}
class Lion implements Animal {
int areaUnderControl;
@Override
public void partner(Animal other) {
Lion lion = (Lion) other;
this.areaUnderControl += lion.areaUnderControl;
}
}
class Human implements Animal {
int money;
@Override
public void partner(Animal other) {
Human human = (Human) other;
this.money += human.money;
}
}
Run Code Online (Sandbox Code Playgroud)
我希望具体实现中的伙伴方法只接收其类型或其子类型的参数.一种解决方案是使用泛型将Animal定义为:
interface Animal<T extends Animal<T>> {
void partner(T other);
}
class Lion implements Animal<Lion> {
int areaUnderControl;
@Override
public void partner(Lion other) {
this.areaUnderControl += other.areaUnderControl; …Run Code Online (Sandbox Code Playgroud) 在为任何企业级java服务编写单元测试用例的模拟依赖服务时,我发现为单元测试用例设置数据非常痛苦.大多数情况下,这是开发人员不编写单元测试用例而非编写集成样式测试用例的最有说服力的理由.如果服务依赖于其他几项服务(取决于它们各自的DAO)和它自己的DAO,那么生成when-thenReturn合理嵌套对象的子句变得相当费力,并且开发人员被视为采用简单的路径并加载整个弹簧上下文并从直接源获取数据,这些数据可能并不总是提供可以遍历所有必需代码路径的数据.在此背景下,我的一位同事建议,为什么不运行样本集成测试,并使用方面,捕获所有相关数据点并将其序列化为XML表示,该表示可用于实现单元测试的测试数据案例.令我们惊喜的是,我们在github上找到了一个名为TestDataCaptureJ的框架,它与此非常相似.它使用方面来捕获数据点,并生成java代码来创建对象.
该网站上的动机似乎非常贴切,我想知道是否还有其他替代品可以提供相似的功能.而且,如果专家能够批评这种整体方法,那将是很好的.
此外,该项目大约2岁,并有一些我们必须修复的错误,并希望将其作为一个mavenized github fork回来.只需检查以确保其中一个着名的马厩也没有其他类似的倡议.
提前致谢!
我们使用MX4J通过容器本身的Web界面访问JMX相关的操作/属性.我想知道是否有替代品可用,因为MX4J的最后一个服务版本是在2006年.我基本上希望克服MX4J在处理集合时的局限性.
我们有一个典型的n层java应用程序,我注意到我们的数据访问层有DAO类型为FooDAO和FooDAOImpl.我想要证明两者的必要性,这是我的分析.
有了这些观点,我觉得真正需要一个单独的FooDAO和FooDAOImpl,其中一个简单的FooDAO就足够了.随意纠正我提到的任何要点.
提前致谢!
关于Maven的新手问题 - Surefire - Eclipse - JUnit
我已经在我的项目的pom文件中配置了maven-surefire-plugin来传递一些额外的JVM参数,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
<configuration>
<argLine>-d64 -Xms128m -Xmx4096m -XX:PermSize=512m -Duser.timezone=UTC -XX:-UseSplitVerifier</argLine>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
当我从Eclipse运行此项目的测试用例作为Run As-> JUnit Test时,虽然正确设置了类路径,但argLine中指定的其他参数不包含在调用中.我必须手动键入相关的参数Debug Configurations.我不太明白JUnit是如何意识到它需要将测试范围的jar放在类路径上,并且在某种程度上意味着Eclipse中的JUnit工具通过M2E知道Maven?如果是这样,我们怎么能让它也读取argLine.我知道这听起来非常具体 - 但其他人如何在类似情况下进行管理?
提前致谢!
我有一个在JVM中运行时生成的代理(生成为JDKProxy或CGLIB).我想知道是否有办法将这个类的内容(看起来像com.sun.proxy $ Proxy123.class)写入一个文件,以便我可以使用像反编译器这样的jd-eclipse来查看代码的类型产生.由于该类存在于JVM中,我想知道是否有一种方法可以让ClassLoader向实际类提供一个InputStream/URL,然后可以用来将内容写入磁盘 - 而这个文件位于磁盘上可以使用jd-eclipse或javap读取.我知道这不是一个生产用例,但我很想看到这个动态生成的类的内容.
谢谢!
我正在查看在tomcat容器中运行的java进程的完整命令行,并且很惊讶地看到-Dnop在那里?有谁知道它做了什么,哪些组件必须放在那里?我没有在catalina.sh中配置类似的东西.我设置了其他系统属性,如Xms和Xmx,PermGen大小,时区等.
sps -wp 20301
/usr/local/java/jdk1.6.0.24/bin/amd64/java -Dnop -Xms128m -Xmx2048m -XX:PermSize=128m -Dcom.sun.management.jmxremote.port=8919 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Duser.timezone=GMT -Djava.endorsed.dirs=/prod/tomcat/endorsed -classpath /prod/tomcat/bin/bootstrap.jar -Dcatalina.base=/prod/tomcat -Dcatalina.home=/prod/tomcat -Djava.io.tmpdir=/prod/tomcat/temp org.apache.catalina.startup.Bootstrap start
sps -wp 20301
/usr/local/java/jdk1.6.0.24/bin/amd64/java -Dnop -Xms128m -Xmx2048m -XX:PermSize=128m -Dcom.sun.management.jmxremote.port=8919 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Duser.timezone=GMT -Djava.endorsed.dirs=/prod/tomcat/endorsed -classpath /prod/tomcat/bin/bootstrap.jar -Dcatalina.base=/prod/tomcat -Dcatalina.home=/prod/tomcat -Djava.io.tmpdir=/prod/tomcat/temp org.apache.catalina.startup.Bootstrap start
sps -wp 20301
/usr/local/java/jdk1.6.0.24/bin/amd64/java -Dnop -Xms128m -Xmx2048m -XX:PermSize=128m -Dcom.sun.management.jmxremote.port=8919 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Duser.timezone=GMT -Djava.endorsed.dirs=/prod/tomcat/endorsed -classpath /prod/tomcat/bin/bootstrap.jar -Dcatalina.base=/prod/tomcat -Dcatalina.home=/prod/tomcat -Djava.io.tmpdir=/prod/tomcat/temp org.apache.catalina.startup.Bootstrap start
我们已经看到 Maven 对于基于 Java 的项目表现非常出色。我从这个问题中看到,非java项目也可以改造为maven模块,尽管它们只会使用maven-exec-plugin来实现不同的目标。在谷歌上,我看到了maven-perl-plugin,但它仍然是一个 1.0-SNAPSHOT,有零星的更新,但看起来确实非常有前途。有没有人使用过这个或任何其他竞争对手,可以让我免于编写无趣的 pom 样板?
编辑:实际上该项目的主要部分是 n 层 Java 模块,并且有一个非常小的 perl/python 组件(用于后端解析),我正在寻找一个地方将其放入这个生态系统中。我获得了一些优势,例如使用 maven-release-plugin 进行标签/分支创建和发布过程,并将其作为同一代码库的一部分,使我能够保持版本号一致性。因此,虽然我不打算对 perl 模块使用 maven 的依赖检索方式(抱歉我对 maven-perl-plugin boy 的研究不够),但我想知道当做这样的事情(或者如果这样的事情没有意义),例如模块名称应该是什么(topLevelModuleName -perl?)以及src / main / perl和src / test / perl下面的结构。我知道我可能会走下坡路,试图把一件事硬塞到另一件事上,但问一下也没什么坏处:)