Tag: 注释

如何创建一组jackson注释注释?

大约一年后,我读了一篇文章,解释了如何创建一个基本上是其他注释容器的注释。 这样,如果我总是在特定用例中使用相同的5个注释,我会创建一个包含它们的注释并使用它。 不幸的是,我再也找不到这篇文章,而且我现在真的想为我的jackson配置做这件事。 由于我自己无法找到任何相关信息,我开始质疑我的记忆。 这可能还是我错了? 编辑 我想要的是: @Target(ElementType.METHOD) @com.fasterxml.jackson.databind.annotation.JsonSerialize(using=MySerializerThatIsUsedEverywhere.class @javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter(MyCustomXmlAdapter.class) @SomeOtherEvaluatedByTheSerializer public @interface SerializerUseCase01 { public String a(); public int b(); ) 我的情况是我有一堆序列化用例,可以由具有不同配置的相同序列化程序处理。 为了使一切更容易使用和更透明,我想将jackson配置和序列化器配置包装成一个注释。

理解Java中的注释

我试图通过一些在线资料来学习java中的注释。 在下面的代码中,我在这行传递的亲爱的“Hello world”字符串发生了什么: @Test_Target(doTestTarget=”Hello World !”) ? @Target(ElementType.METHOD) public @interface Test_Target { public String doTestTarget(); } 以上是定义的注释,下面是它的用法 public class TestAnnotations { @Test_Target(doTestTarget=”Hello World !”) private String str; public static void main(String arg[]) { new TestAnnotations().doTestTarget(); } public void doTestTarget() { System.out.printf(“Testing Target annotation”); } } 当我运行此代码时,它只打印Testing Target annotation 请帮帮我,我是注释的新手。

如何使用Hibernate注释将Java日期映射到mysql中的DATETIME(默认情况下为TIMESTAMP)

我的所有数据库表都应该有一个endTime字段,默认情况下应该是END_OF_TIME或类似的东西。 我对2038的限制感到不满,所以我希望endTime在mysql中的类型为DATETIME。 我的Java代码是: @MappedSuperclass @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public class BaseDBEntity { @Id @Column(length=36) public String id; @Temporal(TemporalType.TIMESTAMP) public Date startTime; @Temporal(TemporalType.TIMESTAMP) public Date endTime; public BaseDBEntity() { } } 我可以通过使用DATETIME类型的endTime字段手动创建表,然后将实体endTime映射到该列,但是我希望Hibernate自动生成表 – 我该怎么做?

如何应用基于URL模式的spring bootfilter?

我创建了一个spring bootfilter – 使用@Component注释实现GenericFilterBean 。 @Component public class MyAuthenticationFilter extends GenericFilterBean { … @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { … } } 该filter由Spring Boot Framework自动识别,适用于所有REST API。 我希望此filter仅适用于某个URL路径,例如/api/secure/*但我找不到正确的方法。 我试过@WebFilter但它没有用。 我没有使用XML配置或servlet初始化程序 – 只是注释。 让它运作的正确方法是什么?

hibernate和inheritance(TABLE_PER_CLASS)

我使用Hibernate来持久化inheritance的对象,但是当我尝试在数据库中持久保存对象时,我得到了这条消息: org.springframework.dao.InvalidDataAccessResourceUsageException: Could not execute JDBC batch update; SQL [update Widget set CONTAINER_ID=? where WIDGET_ID=?]; nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update (…) Caused by: java.sql.BatchUpdateException: Table ‘schema.widget’ doesn’t exist 这是我用来生成表的类: @Entity @Table(name=”CONTAINER”) public class Container { (…) private Set widgets; @OneToMany(targetEntity = Widget.class) @JoinColumn(name=”CONTAINER_ID”, nullable=true) public Set getWidgets() { return widgets; […]

为什么注释属性的值应该是常量表达式?

我有以下代码 @UIUnitTimeout(8*60*1000) // works @UIUnitTimeout(TimeUnit.MINUTES.toMillis(8)) // does not work 我知道根据JLS,只允许常量表达式作为注释属性的值。 但为什么? 如果数据类型匹配,为什么还不够? 如果要在运行时评估表达式,是否有任何可能出错的地方? 每个规范都有逻辑推理吗?

如何通过Java中的reflection获取方法参数的值?

考虑以下代码: public void example(String s, int i, @Foo Bar bar) { /* … */ } 我对用@Foo注释的参数的值感兴趣。 假设我已经通过reflection(使用Method#getParameterAnnotations() )找出了哪个方法参数具有@Foo注释。 (我知道它是参数列表的第三个参数。) 我现在如何检索bar的值以供进一步使用?

使用注释进行exception处理?

假设我有一种抛出某种exception的方法。 抛出exception的代码位于访问外部服务的第三方库中。 我有一些类可以与外部服务进行大量的工作,并且在整个过程中有很多exception处理来处理潜在的问题。 我遇到的问题是我可能有很多例外,但我可能只需要执行一些操作,如果有的话,并且有大量的try / catch块。 exception的类型甚至可能不相关,或者不同的方法可能抛出相同类型的exception,但是根据抛出它的方法需要采取不同的操作。 我正在寻找的是一个可以取代try / catch的注释,并简单地指示当该方法中存在exception时要采取的行为。 我知道Spring ApsectJ可以做到这一点,但我现在无法轻松添加任何新的依赖项或修改pom来调整现有的依赖项。 因此,我希望通过自定义注释可以实现这一点。 例如: @Catcher(action=SomeEnum.SOME_ACTION) public void doSomething(ServiceObj obj) throws SomeException { ExternalService.makeThingsHappen(obj); } 当然,我会假设一个单独的类会处理exception。 另一个困难是我需要传递的ServiceObj。 如果makeThingsHappen()失败,我可能需要obj来执行其他操作。 action变量将告诉处理程序类如何处理obj。 这可以在没有严重粪便的情况下完成,还是我希望有可能不存在的东西?

如何通过命令行查看java classfile的注释?

是否有一个命令行工具,最好是在JDK中,要么在类文件中打印所有注释,要么将特定注释作为参数进行打印? 如果是这样,是否有一个等效命令可以在jar文件上运行,包含在其中的特定类? 我用Google搜索了一段时间,没有运气。 🙁

带有类型参数的注释属性

定义Java接口时,可以使用类型参数声明方法,例如: public interface ExampleInterface { <E extends Enum> Class options(); } 同样的事情在注释中不起作用。 例如,这是非法的: public @interface ExampleAnnotation { <E extends Enum> Class options(); } 我可以通过使用原始类型Enum来获得我想要的东西: public @interface ExampleAnnotation { @SuppressWarnings(“rawtypes”) Class options(); } 究竟是什么原因导致无法使用类型参数声明注释属性?