Tag: 注释

如何从XML Spring调度配置转向注释/代码配置?

我试图将以下Spring任务xml配置转换为纯粹基于代码/注释的版本: 根据Spring规范28.4.1( http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html ),他们说要像这样从XML转发: 代码配置就像启用@EnableScheduling和/或@EnableAsync一样简单。 但是,我没有看到任何可以实际实例化调度程序的地方。 @EnableScheduling的javadoc( http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/annotation/EnableScheduling.html )展示了如何插入我自己创建的Executor,虽然我不确定它应该是什么类(我仍然希望能够控制池大小,队列容量和拒绝策略)。 它还显示了如何使用configureTasks覆盖来调度我的createPartitions方法。 但是,我希望能够命名我的调度程序(因此我可以识别其线程)并控制其池大小。 所以,我想知道这些事情: 1)我可以使用哪个类来设置XML具有的执行器字段? 2)有没有办法创建一个我可以控制名称和池大小的调度程序实例?

使用Annotations修改方法

如何更改Java中的方法? 我的意思是,我正在尝试使用注释来制作以下代码 @Anno1(Argument = “Option1”) public class TestClass { @Anno2 public void test() { } } 成 public class TestClass { private static StaticReference z; public void test() { z.invokeToAll(); } } 这是我想要做的一个非常简单的例子。 Anno1将有许多可能的组合,但到目前为止这不是我的问题。 我的问题是如何将代码添加到方法test() 如果可能的话,我正在寻找更通用的解决方案。 例如。 一种在方法中添加各种代码的方法(不仅仅是.invokeToAll() ) 到目前为止,我使用的是import javax.annotation.processing.*; 我有以下代码,但我不知道如何从那里继续 private void processMethodAnnotations(RoundEnvironment env) { for (Element e : env.getElementsAnnotatedWith(Anno2.class)) { //If it […]

包含其他注释的注释成员?

我想创建一个自定义注释(使用Java),它将接受其他注释作为参数,如: public @interface ExclusiveOr { Annotation[] value(); } 但这会导致编译器错误“注释成员的无效类型”。 对象[]也不起作用。 有办法做我想要的吗?

与xml配置文件相比,注释(非编译器)的优缺点是什么?

当我看到像Hibernate,JPA或Spring这样的Java框架时,我通常可以通过xml文件进行配置或直接在我的类中添加注释。 我一直在问自己应该走哪条路。 当我使用注释时,我将类和它的配置放在一起,但是使用xml我可以更好地了解我的系统,因为我可以看到所有的类配置。 注释也以某种方式编译,我猜它应该比解析xml更快,但另一方面,如果我想更改我的配置,我必须重新编译它而不是只更改xml文件(可能会变得更多方便客户方的生产环境)。 因此,在查看我的观点时,我倾向于采用xml方式。 但是在查看论坛或教程时,通常会使用注释。 你有什么优缺点?

注释上的自定义Eclipse警告

假设我有一个内部方法,只能在某些情况下使用。 在Eclipse中,是否有可能将其标记为内部并在用于阻止我或将使用我的API的人误用而不知道他们正在做什么时显示警告。 我无法更改其可见性,因为它也可能在其他包/非扩展类中使用。 像这样的东西: @Internal public void doSomeInternalStuff() { // … } 然后,在Eclipse中发出警告: 你明白了。 有希望吗?

Hibernate实体字段camelcase,数据库下划线

我在下划线中有数据库字段。 我在camelcase中有实体字段。 我不能改变其中任何一个。 有什么东西,也许是类级注释,我可以使用默认实体列名注释到camelcase等价物? 例如,我有一个像这样的实体: @Entity public class AuthorisationEntity { @Column(name = “non_recoverable”) private BigDecimal nonRecoverable; @Column(name = “supplier_recoverable”) private BigDecimal supplierRecoverable; @Column(name = “refund_amount”) private BigDecimal refundAmount; } 我梦见这个: @Entity @DatabaseIsUnderscoreAndThisAnnotationConvertsThemToCamelCaseByDefault public class AuthorisationEntity { private BigDecimal nonRecoverable; private BigDecimal supplierRecoverable; private BigDecimal refundAmount; }

如何使用@XmlElement注释列表?

我使用javax.xml.bind.annotation.XmlElement有以下注释: @XmlElement public List getKeywords() { return keywords; } 当我编写一些示例内容时,会产生以下XML: keyword1 keyword2 我想获得以下XML: keyword1 keyword2 我应该使用什么样的注释? 我试过了 @XmlElementWrapper @XmlElement(name=”keyword”) 但随后整个内容消失,结果是: 如果我只尝试重命名元素,也会发生同样的情况: @XmlElement(name=”keyword”) 我究竟做错了什么? 更新: 这是根据第一个答案更新的类的完整代码,但它仍然无效(当编组为XML时,结果是一个空列表 ): import java.util.List; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Content { private List keywords; public Content() {} @XmlElementWrapper(name=”keywords”) @XmlElement(name=”keyword”) public List getKeywords() { return keywords; } public […]

约束注释中的变量字段

我需要创建一个自定义约束注释,它可以访问我的bean的另一个字段的值。 我将使用此注释来validation该字段,因为它取决于另一个的值,但是我定义它的方式编译器说“我的字段的注释属性的值”必须是一个常量表达式。 我用这种方式定义了它: @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy=EqualsFieldValidator.class) @Documented public @interface EqualsField { public String field(); String message() default “{com.myCom.annotations.EqualsField.message}”; Class[] groups() default {}; Class[] payload() default {}; } public class EqualsFieldValidator implements ConstraintValidator{ private EqualsField equalsField; @Override public void initialize(EqualsField equalsField) { this.equalsField = equalsField; } @Override public boolean isValid(String thisField, ConstraintValidatorContext arg1) { //my validation […]

用于包装方法的Java注释

我有很多样板代码基本上遵循这种模式: function doSomething() { try { [implementation] [implementation] [implementation] [implementation] } catch (Exception e) { MyEnv.getLogger().log(e); } finally { genericCleanUpMethod(); } } 我想创建自己的注释来清理我的代码: @TryCatchWithLoggingAndCleanUp function doSomething() { [implementation] [implementation] [implementation] [implementation] } 方法签名变化很大(取决于方法的实际实现),但样板try / catch / finally部分始终相同。 我想到的注释将自动包装带注释方法的内容与整个try…catch…finally hoopla。 我一直在寻找一种直截了当的方法,但却没有找到任何东西。 我不知道,也许我只是看不到所有注释树木的树林。 关于如何实现这样的注释的任何指针都将非常感激。

通用,注释驱动的事件通知框架

虽然Java之前的简单,界面驱动的事件通知框架已经存在于寒武纪之前(例如java.beans.PropertyChangeSupport),但是框架使用注释驱动的事件通知变得越来越流行。 有关示例,请参阅JBossCache 2.2 。 侦听器类对其侦听器方法进行了注释,而不是符合严格的接口。 这更容易编程,更容易阅读,因为您不必编写您不感兴趣的侦听器回调的空实现(是的,我知道侦听器适配器超类)。 以下是JBossCache文档中的示例: @CacheListener public class MyListener { @CacheStarted @CacheStopped public void cacheStartStopEvent(Event e) { switch (e.getType()) { case Event.Type.CACHE_STARTED: System.out.println(“Cache has started”); break; case Event.Type.CACHE_STOPPED: System.out.println(“Cache has stopped”); break; } } @NodeCreated @NodeRemoved @NodeVisited @NodeModified @NodeMoved public void logNodeEvent(NodeEvent ne) { log(“An event on node ” + ne.getFqn() + ” […]