Tag: annotations

Spring MVC中有多个@PathVariable

不幸的是找不到答案,所以希望有人可以提供帮助。 在Spring MVC 3.1.0中,这是我的方法: @RequestMapping(value = “/{app}/conf/{fnm}”, method=RequestMethod.GET) public ResponseEntity getConf(@PathVariable String app, @PathVariable String fnm) { log.debug(“AppName:” + app); log.debug(“fName:” + fnm); … return … } 我在网上看到了一些例子,看起来在理论上有多个@PathVariables是没有问题的。 但是,当我这样做时,“app”和“fnm”都包含相同的值(这是分配给“app”的任何值)。 真的很感激有人可能对我出错的地方有任何见解? 谢谢!

ViewResolver使用Java注释

在Spring 3.1.1中是否可以使用Java注释配置视图解析器? 我已经完成了使用Java注释的所有配置,但我被卡在视图解析器中 。 码 package com; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DriverManagerDataSource; import javax.sql.DataSource; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import com.*; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.UrlBasedViewResolver; import org.springframework.web.servlet.view.JstlView; @Configuration @ComponentScan(“com”) public class AppConfig { { //Other bean declarations } @Bean public UrlBasedViewResolver urlBasedViewResolver() { UrlBasedViewResolver res = new InternalResourceViewResolver(); res.setViewClass(JstlView.class); res.setPrefix(“/WEB-INF/”); res.setSuffix(“.jsp”); return res; } } […]

@Component和@Named都是同一个bean类

在Spring应用程序中充当bean的类是否同时需要@Component和@Named ? 如果两者都这样使用有什么意义? 我尝试搜索网络,并看到这些注释的标准文档,发现它们有点令人困惑。 如果@Named注释没有为bean指定任何名称,最后应用程序采用哪个名称?

为Lombok创建自定义注释

我在我的代码中使用了Lombok来自动生成Getter和Setter代码,现在我想添加其他个人Annotations并使用它。 例如,我想添加@Existvalidation现有密钥列表: @Getter @Setter public class User { private String name; private List keys; public boolean existKeys(Integer key) { boolean exist = keys.contains(key); return exist; } } 在创建Annotation之后,我将只需执行以下操作: @Getter @Setter public class User { private String name; @Exist private List keys; }

什么是@Repository和@Autowired用于。 (弹簧)

我正在学习java 3个月,有时我无法理解某些东西的使用目的。 一个主题是dependency injection和spring bean我想出了finally =) 现在我混淆了两个注释@Autowired和@Repository。 首先Autowiring是什么意思? 然后我为什么要使用它们,使用它们和不使用它们之间有什么区别? 今天我也尝试在spring mvc项目中使用hibernate,我不得不搜索大约15个(类找不到错误的原因)jar文件,因为项目中使用的其他jar文件的依赖项。 这是不是必须这样? 这使得初学者学习java非常困难 谢谢…

Hibernate / JPA注释中的多列连接

我有两个实体,我想通过多个列加入。 这些列由两个实体共享的@Embeddable对象共享。 在下面的示例中, Foo只能有一个Bar但Bar可以有多个Foo (其中AnEmbeddableObject是Bar的唯一键)。 这是一个例子: @Entity @Table(name = “foo”) public class Foo { @Id @Column(name = “id”) @GeneratedValue(generator = “seqGen”) @SequenceGenerator(name = “seqGen”, sequenceName = “FOO_ID_SEQ”, allocationSize = 1) private Long id; @Embedded private AnEmbeddableObject anEmbeddableObject; @ManyToOne(targetEntity = Bar.class, fetch = FetchType.LAZY) @JoinColumns( { @JoinColumn(name = “column_1”, referencedColumnName = “column_1”), @JoinColumn(name = “column_2”, referencedColumnName […]

Retrofit 2 – 在api级别添加标头的优雅方式

我的Retrofit 2(当前2.0.2 )客户端需要为请求添加自定义标头。 我正在使用Interceptor将这些标头添加到所有请求中: OkHttpClient httpClient = new OkHttpClient(); httpClient.networkInterceptors().add(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { final Request request = chain.request().newBuilder() .addHeader(“CUSTOM_HEADER_NAME_1”, “CUSTOM_HEADER_VALUE_1”) .addHeader(“CUSTOM_HEADER_NAME_2”, “CUSTOM_HEADER_VALUE_2”) … .addHeader(“CUSTOM_HEADER_NAME_N”, “CUSTOM_HEADER_VALUE_N”) .build(); return chain.proceed(request); } }); Retrofit retrofitClient = new Retrofit.Builder() .baseUrl(baseUrl) .client(httpClient) .build(); 我总是想添加一些标头,但是我只需要根据特定端点的要求添加一些标头,例如用户是否需要进行身份validation。 我希望能够在api级别控制它,例如使用注释,例如: public interface MyApi { @NO_AUTH @POST(“register”) Call register(@Body […]

如何为java注释处理器编写自动化unit testing?

我正在尝试使用java注释处理器。 我能够使用“JavaCompiler”编写集成测试(实际上我现在正在使用“hickory”)。 我可以运行编译过程并分析输出。 问题:即使我的注释处理器中没有任何代码,单个测试也会运行大约半秒钟。 这在TDD风格中使用它太长了。 嘲笑依赖关系对我来说似乎很难(我必须模拟整个“javax.lang.model.element”包)。 有人成功为注释处理器(Java 6)编写unit testing吗? 如果不是……你的方法是什么?

使用注释确保不会丢弃方法返回的值

Java中的String是不可变的。 从广义上讲,以下片段是“错误的”。 String s = “hello world!”; s.toUpperCase(); // “wrong”!! System.out.println(s); // still “hello world!”!!! 尽管这是“错误的”,代码编译和运行,也许是许多初学者的困惑,他们必须被告知错误是什么,或者通过查阅文档找出自己。 阅读文档是理解API的重要部分,但我想知道是否可以通过额外的编译时检查来补充它。 特别是,我想知道是否可以使用Java的注释框架来强制执行某些方法返回的值不被忽略。 然后,API设计者/库作者将在其方法中使用此注释来记录不应忽略哪些返回值。 一旦API补充了这个注释(或者可能是另一种机制),那么每当用户编写如上所述的代码时,它就不会编译(或者通过严厉的警告进行编译)。 那么这可以做到,你会怎么做这样的事情? 附录:动机 很明显,在一般情况下,Java 应该允许忽略方法的返回值。 List.add ( 总是为 true ), System.setProperty (之前的值)等方法的返回值可能在大多数情况下可以安全地被忽略。 但是,也有许多方法的返回值不应该被忽略。 这样做几乎总是程序员错误,或者不正确使用API​​。 这包括以下内容: 关于不可变类型(例如String , BigInteger等)的方法,它返回操作的结果 ,而不是改变它被调用的实例。 返回值是其行为的关键部分且不应忽略的方法,但人们有时会做(例如InputStream.read(byte[])返回读取的字节数,不应假设为整个长度数组) 目前,我们可以编写忽略这些返回值的代码,并让它们在没有警告的情况下编译和运行。 静态分析检查器/ bug查找器/样式执行器/等几乎可以肯定地将这些标记为可能的代码味道,但是如果可以通过API本身(可能通过注释)强制执行它,它似乎是合适的/理想的。 一个类几乎不可能确保它总是“正确”使用,但它可以做些什么来帮助指导客户正确使用(参见: Effective Java 2nd Edition,Item 58:对可恢复的条件使用已检查的exception和编程错误的运行时exception和项62:记录每种方法抛出的所有exception )。 有一个注释可以强制客户端不要忽略某些方法的返回值,并且编译器在编译时以错误或警告的forms强制执行它,这似乎符合这个想法。 附录2:代码段 以下是初步尝试,简洁地说明了我想要实现的目标: @interface Undiscardable { […]

使用maven为eclipse编译器设置Java 6注释处理配置

为Java 6注释处理器设置eclipse项目编译器配置的最佳方法是什么? 我的解决方案是手动设置org.eclipse.jdt.apt.core.prefs和factorypath文件。 这有点麻烦: 在factorypath文件中引用处理器jar 配置eclipse注释处理器输出目录(org.eclipse.jdt.apt.genSrcDir属性) 添加eclipse注释处理器输出目录作为源文件夹 一个问题是eclipse生成的源将使用maven编译。 只有maven clean compile是可靠的,因为它删除了eclipse生成的源文件。 (Eclipse和javac生成的源文件可能不同步。) 是否有更好的解决方案来配置maven而不在even源路径上生成eclipse生成的源文件? ${project.build.directory}/eclipse org.codehaus.mojo build-helper-maven-plugin 1.4 add-source generate-sources add-source ${eclipse.generated.src} org.apache.maven.plugins maven-eclipse-plugin .factorypath <![CDATA[ ]]> .settings/org.eclipse.jdt.apt.core.prefs