标签: annotations

用例实现注释

什么是实现注释的有效用例?

在设计主要基于注释的配置系统时,我偶尔需要创建实现代码生成或编程配置注释的类.

替代方案涉及将注释中包含的数据镜像到DTO中,这似乎是一种开销.

这是一个例子:

public enum IDType {
    LOCAL,
    URI,
    RESOURCE;
}

@Documented
@Target( { METHOD, FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface Id {
    /**
     * @return
     */
    IDType value() default IDType.LOCAL;
}
Run Code Online (Sandbox Code Playgroud)

随着实施

public class IdImpl implements Id{

    private final IDType idType;

    public IdImpl(IDType idType){
        this.idType = idType;
    }

    @Override
    public IDType value() {
        return idType;
    }

    @Override
    public Class<? extends Annotation> annotationType() {
        return Id.class;
    }

}
Run Code Online (Sandbox Code Playgroud)

我得到了编译器警告,但它似乎是许多用例的有效工具.

以上示例的警告是

注释类型Id不应用作IdImpl的超接口

编辑:

我刚从Guice找到这个例子:

bind(CreditCardProcessor.class)
    .annotatedWith(Names.named("Checkout"))
    .to(CheckoutCreditCardProcessor.class);
Run Code Online (Sandbox Code Playgroud)

从名称中 …

java annotations

37
推荐指数
1
解决办法
1万
查看次数

如何将JSON字段名称映射到不同的对象字段名称?

对于以下jax-b注释,Jackson json注释中的等价方式是什么?

我需要生成json而不是xml,并且需要知道在jax-b中等效表示的传统jackson注释.

  1. 重命名一个字段.
  2. 使用getter而不是字段.

如果json/xml元素名称是一个java保留字,如" new"," public"," static"等,这些功能尤其重要.

因此,我们必须将POJO字段分别命名为"_new_","_ public _","_ static_"等,

但是使用jax-b注释将它们重命名为生成的XML(和json)元素中的"new","public","static"等.

重命名字段

@XmlAccessorType(XmlAccessType.FIELD)
public class Person{
    @XmlElement(required = true)
    protected String name;
    @XmlElement(required = true)
    protected String address;
    @XmlElement(name = "contractor")
    protected boolean _restricted_ ;
    @XmlElement(name = "new")
    protected boolean _new_ ;
}
Run Code Online (Sandbox Code Playgroud)

重定向到使用属性getter(我认为这是在jax-b中完成的方式)

@XmlAccessorType(XmlAccessType.PROPERTY)
public class Person{
    protected String name;
    protected String address;
    protected boolean _restricted_ ;
    protected boolean _new_ ;

    @XmlElement(required = true)
    protected String getName() {return name;}
    @XmlElement(required = true) …
Run Code Online (Sandbox Code Playgroud)

java xml json annotations jackson

37
推荐指数
2
解决办法
6万
查看次数

如何使用后面的代码创建自定义注释

我想创建自己的自定义注释.我的框架是Stand alone java应用程序.当有人注释他的pojo类时,后面的"隐藏"代码将触发方法.

例如,今天在Java EE中我们有@MessageDriven注释.当您使用@MessageDrivenMessageListener接口并使用MessageListener接口注释您的类时,会触发一个后面的代码onMessage(Message msg).当消息从队列/主题到达时.

如何创建@MyMessageDriven可以添加到pojo并实现的注释()MyCustomMessageListener.

我想要的结果是触发"隐藏"代码(我的),它将触发一个实现接口的方法(就像我在下面写的样本一样).

java annotations dependency-injection interface

37
推荐指数
2
解决办法
6万
查看次数

使用Hibernate Annotations映射枚举类型

我的Java模型上有一个枚举类型,我想将其映射到数据库中的表.我正在使用Hibernate Annotations,我不知道该怎么做.由于我搜索的答案相当陈旧,我想知道哪种方式最好?

提前致谢

java orm enums annotations hibernate

36
推荐指数
1
解决办法
4万
查看次数

在使用JPA映射类时,为什么有人会在getter或setter上添加注释?

主题说明了一切......到目前为止,我认为人们没有在吸气剂和/或制定者上声明注释的优势.对我来说,这只会带来在类上传播注释的缺点,这会使类更难以理解.

将注释放在字段上会明显减少需要帮助时要发布的代码量.这只是一个很小的优势.但是对方法进行注释对我没有任何意义.

java mapping annotations hibernate jpa

36
推荐指数
2
解决办法
2万
查看次数

Servlet 3.0:@WebServletContextListener在哪里?

我试图按照一个Servlet 3.0 教程是指@WebServletContextListener.但是,我在javaee-web-api-6.0.jar依赖项中找不到这样的注释(我正在使用maven).

那么,在哪里@WebServletContextListener

java annotations servlets servlet-3.0

36
推荐指数
1
解决办法
7990
查看次数

使用注释创建原型范围的Spring bean?

是否可以将以下XML配置转换为基于注释的配置

<bean id="myBean" class="my.package.MyBeanClass" scope="prototype" />
Run Code Online (Sandbox Code Playgroud)

我正在使用Spring 2.5.6.

java spring scope annotations javabeans

36
推荐指数
2
解决办法
5万
查看次数

Hibernate @NotEmpty注释等效于Javax.package或替代

有没有办法在@NotEmpty不编写自定义验证的情况下实现hibernate验证?javax.validation包不包含此批注.只有@NotNull.但它不验证非空值但为空值.所以我想看看替代品@NotEmpty.

@Pattern?怎么样?

java validation annotations bean-validation notnull

36
推荐指数
2
解决办法
4万
查看次数

如何使用spring mvc使用@RequestParam捕获多个参数?

假设单击了一个超链接,并使用以下参数列表触发了一个url myparam=myValue1&myparam=myValue2&myparam=myValue3.现在我如何@RequestParam在spring mvc中捕获所有参数?

我的要求是我必须捕获所有参数并将它们放在地图中.

请帮忙!

spring annotations spring-mvc

36
推荐指数
4
解决办法
8万
查看次数

JavaConfig优于Spring中的XML配置?

之前的配置曾经在代码中进行了硬编码,之后将其外部化为.property文件(为了避免硬编码值,避免为了更改配置而改变代码等等),然后将其移至XML(for为了更加标准化,没有错误..等等)

现在,在阅读Spring 3中的@Configuration时,看起来我们又回到了最初的方法.

为什么我们要在代码中硬编码配置而不是将其外部化?

spring annotations spring-annotations spring-3

36
推荐指数
1
解决办法
2万
查看次数