什么是实现注释的有效用例?
在设计主要基于注释的配置系统时,我偶尔需要创建实现代码生成或编程配置注释的类.
替代方案涉及将注释中包含的数据镜像到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)
对于以下jax-b注释,Jackson json注释中的等价方式是什么?
我需要生成json而不是xml,并且需要知道在jax-b中等效表示的传统jackson注释.
如果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) 我想创建自己的自定义注释.我的框架是Stand alone java应用程序.当有人注释他的pojo类时,后面的"隐藏"代码将触发方法.
例如,今天在Java EE中我们有@MessageDriven注释.当您使用@MessageDrivenMessageListener接口并使用MessageListener接口注释您的类时,会触发一个后面的代码onMessage(Message msg).当消息从队列/主题到达时.
如何创建@MyMessageDriven可以添加到pojo并实现的注释()MyCustomMessageListener.
我想要的结果是触发"隐藏"代码(我的),它将触发一个实现接口的方法(就像我在下面写的样本一样).
我的Java模型上有一个枚举类型,我想将其映射到数据库中的表.我正在使用Hibernate Annotations,我不知道该怎么做.由于我搜索的答案相当陈旧,我想知道哪种方式最好?
提前致谢
主题说明了一切......到目前为止,我认为人们没有在吸气剂和/或制定者上声明注释的优势.对我来说,这只会带来在类上传播注释的缺点,这会使类更难以理解.
将注释放在字段上会明显减少需要帮助时要发布的代码量.这只是一个很小的优势.但是对方法进行注释对我没有任何意义.
我试图按照一个Servlet 3.0 教程是指@WebServletContextListener.但是,我在javaee-web-api-6.0.jar依赖项中找不到这样的注释(我正在使用maven).
那么,在哪里@WebServletContextListener?
<bean id="myBean" class="my.package.MyBeanClass" scope="prototype" />
Run Code Online (Sandbox Code Playgroud)
我正在使用Spring 2.5.6.
有没有办法在@NotEmpty不编写自定义验证的情况下实现hibernate验证?javax.validation包不包含此批注.只有@NotNull.但它不验证非空值但为空值.所以我想看看替代品@NotEmpty.
用@Pattern?怎么样?
假设单击了一个超链接,并使用以下参数列表触发了一个url myparam=myValue1&myparam=myValue2&myparam=myValue3.现在我如何@RequestParam在spring mvc中捕获所有参数?
我的要求是我必须捕获所有参数并将它们放在地图中.
请帮忙!
之前的配置曾经在代码中进行了硬编码,之后将其外部化为.property文件(为了避免硬编码值,避免为了更改配置而改变代码等等),然后将其移至XML(for为了更加标准化,没有错误..等等)
现在,在阅读Spring 3中的@Configuration时,看起来我们又回到了最初的方法.
为什么我们要在代码中硬编码配置而不是将其外部化?
annotations ×10
java ×8
spring ×3
hibernate ×2
enums ×1
interface ×1
jackson ×1
javabeans ×1
jpa ×1
json ×1
mapping ×1
notnull ×1
orm ×1
scope ×1
servlet-3.0 ×1
servlets ×1
spring-3 ×1
spring-mvc ×1
validation ×1
xml ×1