Tag: annotations

使用注释生成equals / hashcode / toString

我相信我通过识别哪些字段应该是散列/相等测试的一部分来读取人们在编译期间(使用APT)生成equals / hashcode / toString方法的地方。 我在网上找不到那样的东西(我可能梦见过它?)…… 这可以这样做: public class Person { @Id @GeneratedValue private Integer id; @Identity private String firstName, lastName; @Identity private Date dateOfBirth; //… } 对于一个实体(所以我们想要排除一些字段,比如id)。 或者像scala案例类,即值对象: @ValueObject public class Color { private int red, green, blue; } 不仅文件变得更易读和更容易编写,而且它还有助于确保所有属性都是equals / hashcode的一部分(如果您稍后添加其他属性,而不相应地更新方法)。 我听说APT在IDE中得不到很好的支持,但我不认为这是一个主要问题。 毕竟,测试主要由持续集成服务器运行。 有没有想过这是否已经完成,如果不是为什么? 谢谢

为什么我必须在@Constructor注释注释的Spring配置类中有一个默认构造函数?

我正在攻读Spring Core认证,并且根据所提供的学习内容,我有这个问题,但我无法给出答案。 为什么必须在@Configuration注释类中使用默认构造函数? 我没有将任何构造函数声明为@Configuration批注注释的配置类。 默认构造函数是超类inheritance的构造函数? 或者是什么? 为什么我必须有一个默认的构造函数,我不能覆盖它? TNX

在Stanford CoreNLP中添加新的注释器

我正在尝试根据http://nlp.stanford.edu/downloads/corenlp.shtml中的说明在Stanford CoreNLP中添加一个新的注释器。 “添加新的注释器StanfordCoreNLP还能够通过reflection添加新的注释器而无需更改StanfordCoreNLP.java的代码。要创建新的注释器,请扩展类edu.stanford.nlp.pipeline.Annotator并使用以下方法定义构造函数。 signature(String,Properties)。然后,将属性customAnnotatorClass。FOO FOO=BAR到用于创建管道的属性。如果FOO随后被添加到注释器列表中,将创建类BAR,其名称用于创建它和传入的属性文件。“ 我已经为我的新注释器创建了一个新类,但我不能放入传入的属性文件。我只将新的注释器放在管道中。 props.put(“annotators”, “tokenize, ssplit, pos, lemma, ner, parse, dcoref, regexner, color”); props.setProperty(“customAnnotatorClass.color”, “myPackage.myPipeline”); 有没有示例代码可以帮助我?

从注释处理器应用CGLib代理

我有一个工作的注释处理器在编译时处理我的自定义注释,我想应用CGLIB代理将逻辑应用于使用MethodInterceptor一些方法,我有两个独立工作的东西。 我无法弄清楚如何应用注释处理器中的CGLIB代码。 我想要做的是能够使用我的自定义注释注释一个类,并让它自动添加我已经应用的Enhancer代码,所以我不必手动应用我自己的Enhancer代码。 这似乎是编译时注释处理的完美用例。

我可以使用带有beanvalidation的hibernate实体注释吗?

要在JSF 2中对表单字段使用beanvalidation,可以在bean中使用注释,如@Length(max=5) 。 但是,由于这些约束已经在我的Hibernate实体对象中定义,例如: @Column(name = “FIELDX”, length = 5) ,我想知道是否有办法将它们用于validation?

Spring Error – java.lang.NoSuchMethodError:> org.springframework.beans.factory.annotation.InjectionMetadata。

伙计们, 我试图运行一个使用@Required.的简单弹簧示例@Required. 但是,当我运行主方法类时,我得到下面的exception跟踪? 线程“main”中的exceptionjava.lang.NoSuchMethodError:org.springframework.beans.factory.annotation.InjectionMetadata。(Ljava / lang / Class; Ljava / util / Collection;)V org.springframework.orm.jpa.support。 PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:377)在org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotationBeanPostProcessor.java:295)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java: 750)atg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:451)at java.security的org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory $ 1.run(AbstractAutowireCapableBeanFactory.java:412)。 org.springframework.beans.fac中的AccessController.doPrivileged(Native Method) 位于org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:276)的org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton中的tory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:383) (DefaultSingletonBeanRegistry.java:222)org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:273)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:175)at Org.springframework.bens.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:485)位于org.springframework.context.support.AbstractApplicationContext的org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:716)。刷新(AbstractApplicationContext.java:377)org.springframework.context.support.ClassPathXmlApplicationContext。(Clas sPathXmlApplicationContext.java:139)atg.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:83)at com.springexamples.annotation.required.EmployeeTest.main(EmployeeTest.java:19) 我是否在classpath中缺少任何特定的jar? 谢谢

使用注释创建Callables

我正在尝试建立一个类似于https://github.com/ElgarL/TownyChat/blob/master/src/com/palmergames/bukkit/TownyChat/TownyChatFormatter.java的系统 replacer.registerFormatReplacement(Pattern.quote(“{worldname}”), new TownyChatReplacerCallable() { @Override public String call(String match, LocalTownyChatEvent event) throws Exception { return String.format(ChatSettings.getWorldTag(), event.getEvent().getPlayer().getWorld().getName()); } }); replacer.registerFormatReplacement(Pattern.quote(“{town}”), new TownyChatReplacerCallable() { @Override public String call(String match, LocalTownyChatEvent event) throws Exception { return event.getResident().hasTown() ? event.getResident().getTown().getName() : “”; } }); 和更多。 有没有办法使用注释来减少重复代码的数量,避免reflection调用调用方法,并且只在注册时使用它,如果有的话? 我并不反对创建注释预处理器的想法,因为我已经计划这样做以启用自动生成文档。

Hibernate Validator:拦截无效值

我想设置我的bean以使用Hibernate Validator(用于validation)和Google Guice(用于DI和方法拦截)。 理想情况下,我想要一个设置,其中任何“失败”validation的方法将导致调用方法拦截器: public class Widget { @NotNull public Fizz getFizz() { return fizz; } } public class FailedWidgetInterceptor implements MethodInterceptor { public Object invoke(MethodInvocation invocation) throws Throwable { // This gets executed if Widget’s getFizz() returns null… } } 但看起来Hibernate Validator只允许您通过将对象T显式传递给ClassValidator的getInvalidValues()方法来确定通过/失败状态。 所以我需要一个地方来打个电话! 我能想到的唯一可行的解决方案是创建我自己的注释(我之前从未做过!),它可能如下所示: @NotNull public @interface AutoValidatingNotNull { // …?? } 然后在Guice Module […]

基于Hibernate Annotation的Query执行错误?

实际上在我的基于Hibernate Annotation的应用程序中有这些ValueObject类(Bean类)这些是.. public Class CourseVO{ @Column(name=”NAME”) private String name; } SKillsetVO类 public Class SkillsetVO{ @ManyToOne @JoinColumn(name=”COURSE_ID”, insertable=false, updatable=false) private CourseVO courseSID; @ManyToMany(cascade = {CascadeType.ALL}, fetch=FetchType.EAGER) @JoinTable(name=”SKILLSET_COURSE”,joinColumns={@JoinColumn(name=”SKILLSET_ID”,referencedColumnName=”S_ID”)},inverseJoinColumns={@JoinColumn(name=”S_ID”)}) private Set course;} TimetableVO类 public class TimetableVO{ @ManyToOne @JoinColumn(name=”SKILLSET_ID”, insertable=false, updatable=false) private SkillsetVO skillsetSID; } 注意上面的代码Primarikey名为S_ID包含另一个名为AbstractVO的类,所以我的所有类都扩展了这个AbstractVO类,所以在主键上没有问题…现在在我的业务逻辑中我编写了一个查询: select tt from TimetableVO tt join tt.skillsetSID.course c where c.name in (:courseNames) 然后我给予:courseName喜欢’java’然后它给出error […]

Java制作了一个单独的注释,它结合了其他注释

使用Play Framework 2.2,制作RESTfull API。 在我正在使用的模型中,我想输出(Json with Jackson)只有相关对象的Id,而不是整个对象。 我发现如何做到这一点,如下: @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = “id”) @JsonIdentityReference(alwaysAsId = true) @JsonIgnore public Object myObject; Json输出将包含JsonNode“myObjectId:1”。 例如。 IdentityInfo和IdentityReference会处理这个问题。 问题是,无论我想要什么,我都必须粘贴这3行,以及需要为某个字段提供的任何其他注释。 这变得太大了,我正在尝试创建一个自定义注释来完成所有这些事情。 这有可能,怎么样? 我可以阅读一个链接,我可以阅读它或一个例子。