Tag: 注释

注释与XML,优缺点

我是java的新手,我正在阅读有关注释和xml的内容,我个人发现xml有很多优点,比如它可以放在应用程序之外,可以在不重新编译类文件的情况下进行更改。 如果我使用注释,如果我需要进行更改需要转到源代码并重新编译应该完成。 如果是这种情况,我们为什么要使用注释

Hibernatevalidation注释 – validation至少一个字段不为空

有没有办法使用此处定义的注释定义Hibernatevalidation规则,说明至少有一个字段不为空? 这将是一个假设的例子( @OneFieldMustBeNotNullConstraint并不存在): @Entity @OneFieldMustBeNotNullConstraint(list={fieldA,fieldB}) public class Card { @Id @GeneratedValue private Integer card_id; @Column(nullable = true) private Long fieldA; @Column(nullable = true) private Long fieldB; } 在图示的情况下,fieldA可以为null或fieldB可以为null,但不能同时为两者。 一种方法是创建我自己的validation器,但我想避免它已经存在。 如果您已经制作了一个validation器,请分享一个validation器…谢谢!

几次调用Method / Field.getAnnotation(Class)与在Map中预缓存此数据的性能

我想知道是否有任何关于重复调用(在Java中) Method.getAnnotation(Class)和Method.getAnnotation(Class) Field.getAnnotation(Class)方法的性能的比较/研究,而不是存储(在程序启动时)预先计算的映射具有类的元数据信息并稍后重复查询。 哪一个可以提供最佳的运行时性能? 在Java 5,6和7下,这种性能是否相同?

多对多关系的属性(Hibernate)

我有实体类A和C.它们映射表tblA和tblC并且它们之间具有多对多关系,并且tblB在它们之间进行映射。 tblB包含A_ID,C_ID和SetDate,最后一个是它被设置的日期,因此是关系的属性。 我的问题是,我如何最好地映射这个属性? 目前它们未被映射,如下所示: A: @ManyToMany(targetEntity=C.class, cascade={ CascadeType.PERSIST, CascadeType.MERGE } ) @JoinTable(name=”tblB”, joinColumns=@JoinColumn(name=”A_ID”), inverseJoinColumns=@JoinColumn(name=”C_ID”) ) private Collection Cs; C: @ManyToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE}, mappedBy = “Cs”, targetEntity = A.class ) private Collection As; 我怎么能得到tblB.SetDate呢? 干杯 聂

如何在@括号(“Luke”)之类的java注释中使用括号内没有属性?

如何在括号内没有属性名称的自定义java注释? 我不想要这个: @annotation_name(att=valor) 。 我只想在Servlets中,即: @WebServlet(“/main”)

Java注释不起作用

我正在尝试使用Java注释,但似乎无法让我的代码识别出存在的一个。 我究竟做错了什么? import java.lang.reflect.*; import java.lang.annotation.*; @interface MyAnnotation{} public class FooTest { @MyAnnotation public void doFoo() { } public static void main(String[] args) throws Exception { Method method = FooTest.class.getMethod( “doFoo” ); Annotation[] annotations = method.getAnnotations(); for( Annotation annotation : method.getAnnotations() ) System.out.println( “Annotation: ” + annotation ); } }

如何扩展Java注释?

在我的项目中,我使用预定义的注释@With : @With(Secure.class) public class Test { //…. @With的源代码: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface With { Class[] value() default {}; } 我想编写自定义注释@Secure ,它与@With(Secure.class)具有相同的效果。 怎么做? 如果我这样喜欢怎么办? 它会起作用吗? @With(Secure.class) @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface Secure { }

是否可以在运行时访问Java 8类型信息?

假设我在一个使用Java 8类型注释的类中有以下成员: private List emailAddresses; 是否可以使用reflection读取在运行时使用的String类型上给出的@Email注释? 如果是这样,怎么办呢? 更新:这是注释类型的定义: @Target(value=ElementType.TYPE_USE) @Retention(RetentionPolicy.RUNTIME) public @interface Email {}

类是否有可能inheritance超类的注释

我正在使用Spring Framework事务注释进行事务管理,我有一个注释@Transactional的抽象类,如下所示: package org.tts.maqraa.service; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Set; import javax.persistence.EntityManager; import javax.persistence.EntityNotFoundException; import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContextType; import javax.persistence.Query; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Parts of this code have been copied from JARVANA site. * * @author Younis alomoush * */ @Transactional(propagation=Propagation.REQUIRED) public abstract class AbstractMaqraaService implements […]

Jaxb:在同一个包中解组带有多个名称空间的xml

我是新手在xml中使用命名空间,所以我有点困惑,想要一些澄清。 我有一个java服务,我接收带有许多不同命名空间的xml文档,当我使用它时,我觉得我一定做错了所以我想检查。 在我的package-info.java中,我有我的模式注释,例如: @javax.xml.bind.annotation.XmlSchema( xmlns={ @javax.xml.bind.annotation.XmHS(prefix=”train”, namespaceURI=”http://mycompany/train”), @javax.xml.bind.annotation.XmHS(prefix=”passenger”, namespaceURI=”http://mycompany/passenger”) }, elementFormDefault = javax.xml.bind.annotation.XmlNsForm=QUALIFIED ) 我在类级别上有一个Train.java注释: @XmlRootElement(name=”Train”, namespace=”http://mycompany/train”) 并且类中的每个字段都注释为: @XmlElement(name=”Color”) for example 火车包含一个乘客名单,所以有一个属性 private Set passengers; 此集合注释为: @XmlElementWrapper(name=”Passengers”) @XmlElements(@XmlElement(name=”Passenger”, namespace=”http://mycompany/passenger”)) 然后在Passenger.java中,类本身注释为: @XmlElement(name=”Passenger”, namespace=”http://mycompany/passenger”) 最后,对于Passenger.java中的各个字段,它们的注释如下: @XmlElement(name=”TicketNumber”, namespace=”http://mycompany/passenger”) 所以当我有一个看起来像这样的xml: Red T101 现在我解组我收到的这个xml并设置了Train的Color属性并设置了Passenger的TicketNumber属性。 但是我不知道为什么我需要在TicketNumber上的XmlElement注释上添加名称空间url才能使用它,但我不需要为Train上的Color属性执行此操作。 如果我从TicketNumber上的XmlElement注释中删除namespace属性,则xml中的值不会映射到该对象,除非我还从xml请求中删除了名称空间前缀。 我觉得因为我已经在XmlRootElement for Passenger上定义了namespace属性,所以我不应该为类中的每个字段都这样做,就像我没有为Train一样,所以我假设我必须设置错误。 有人能指出我正确的方向吗? 谢谢!