如何根据REST中创建这些资源的用户来授权特定的资源,使用注释
我不了解保留政策的Java注释很好.我要做的是创建一个名为@Authorize的注释,并将其用于需要用户授权以执行某些操作的方法(目前已经对用户进行了身份验证). 例如.我有一个使用getOrder()方法的订单服务.我只需要创建此订单以访问它的用户. public void getOrder(User user) { //current code does something like this if(order.getCreatedBy().equals(user)) { //then proceed. } } 我不想将此逻辑与业务逻辑相结合.相反,我希望有类似的东西 - @Authorize public void getOrder(User user) { //business logic } ` 有几种方法,但并非所有方法都需要这种授权.有人可以向我解释一下如何将这些碎片放在这里吗? 在这一点上,我不了解的是,Antota
26 2024-03-20
编程技术问答社区
在一个项目中使用Aspectj编译时编织和Java编译时注释处理
我已经搜寻了很广泛的范围,没有找到任何可以帮助我解决问题的东西.我正在尝试实现某种功能,并且正在创建一个POC解决方案,但是这里是问题: 它涉及使用编译时间编织的extackJ和编译时间注释处理器 我不知道如何同时使这两个工作. 到目前为止,我一直在使用ActectJ-Maven-Plugin中的 *.aj文件中的方面,而且工作正常.不过,一旦尝试使用Maven-Compiler-Plugin添加注释处理,问题就变得不合时宜:由Switchj-Maven-Plugin在编译阶段生成的目标目录中的编织类被Maven-Compiler-Plugin覆盖根据其在编译阶段生成的类. 控制台输出表明,首先是j-maven-plugin做的工作并编织所有类: [INFO] --- aspectj-maven-plugin:1.10:compile (default) @ demo --- [INFO] Showing AJC message detail for mes
10 2024-03-16
编程技术问答社区
处理方法主体内的注释
我正在使用可插入注释处理API处理Java注释.是否有可能在某种程度上处理 的方法主体? 感谢您的帮助.彼得 解决方案 我想,我找到了解决方案.正如我想的那样,当前的Javac不可能.本地注释只是简单的评论,不会通过可插入的注释处理API处理.但是,在 jsr308 中,处理类型的注释可以支持奇妙事物作为类型 - 可变物,本地 - 可变物,本地,本地,本地,本地,本地,本地,,变量,带注释的型检查和铸造...看起来,它将被整合到OpenJDK 8中.NICE 其他解决方案 在JSR269中,相关接口将为 javax.lang.model.element.VariableElement ,继承 getAnnotation(Class annotationType) 用于访问此类注释: for (VariableElement variable : ElementFilter.fieldsIn(methods)) { final Annotation
14 2024-03-03
编程技术问答社区
eclipse java注释处理
我想在Eclipse Jdt中使用注释处理做点事. eclipse jdtapt帮助告诉我,我应该在Java/编译器/注释处理首选项上配置内容页面. 但是,在我的安装(Indigo)中,编译器部分没有此注释处理小节.它只有建筑物,错误/警告,Javadoc,任务标签. 我的安装有问题吗? 解决方案 "注释处理"选项卡中不存在从Eclipse菜单栏访问的首选项页面中.这是一个特定于项目的菜单,如果您右键单击项目Explorer中的项目并在弹出菜单中选择的首选项,则可以访问. 如此教程. 其他解决方案 i自动化我的Eclipse项目文件,因此我更喜欢使用UI设置此内容... 项目/.factoryPath:
12 2024-03-03
编程技术问答社区
如何在编译过程中对注释处理器进行逐步调试?
我有一个注释处理器,用于保留策略的注释=源= 我不知道如何踩踏. 我发出了打印语句,运行MVN安装,编译或包装或Ant Javac时发布的记录信息,我在编译日志中看到了他们的Sysout. 但是,我不知道如何在Eclipse中踩下处理器.我的意思是,您如何踩纸编译时间? 解决方案 您必须使用调试配置从Eclipse调用Java编译器(您需要从"调试配置..."菜单选择中手动创建配置. 在JDK 1.6或更高版本下调用Java编译器的"正确"方法是使用"快速和折扣"的方式(应该有效,但我不保证)是调用com.sun.tools.javac.Main.main(),将其传递给正常的命令行参数.为此,您需要在类路径上tools.jar(在$JAVA_HOME/lib中找到). 其他解决方案 最近的一个选项是使用 http://github.com/google/编译测试,您可以通过任意注释处理器调用编译作业,您可以将其设置为断点,逐步浏览等. @T
10 2024-02-26
编程技术问答社区
如何在Gradle上触发最小任务以运行apt插件
我正在创建一个编译时间注释处理器,以在Android上生成一些代码. 要触发注释处理器,我正在使用hvisser 目前,我在Processor extends AbstractProcessor上进行的每一个更改都必须运行一个完整的/.gradlew clean build才能查看结果,这是一个缓慢的过程,即使对于一个很小的示例项目. 所以我的问题,我可以用任何gradlew tasks触发注释处理器吗? 我当前./gradlew tasks的输出是: ------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------ Android tasks ------------- androidDependencies -
6 2024-02-26
编程技术问答社区
如何用一个注释处理器来代替GWT.create?
我想创建一个注释处理器,该处理器将调用替换为GWT.create. 使用注释处理器,您必须同时生成两个类,然后根据上下文进行动态(在运行时)选择(在运行时)选择(您可以生成工厂来帮助这样做,但是您仍然必须以某种方式必须以当前上下文为工厂,例如当前的语言环境). - 来源: https://stackoverflow.com/a/29915793/116472 我让我的注释处理器运行它很好地生成了类.我不知道的部分是运行时选择部分. 我该如何选择? 解决方案 我会假设您已经涵盖了代码生成方,只关注我们如何在GWT中选择正确的实现: ,但您仍然必须以某种方式以当前的上下文为工厂,例如当前的环境). 您可以在运行时执行此操作,但是在最近添加的System.getProperty的支持下,您也可以在编译时执行此操作. 第一步,第一步是为您可能的每个实现生成代码.以Localtes为例,您可能有Foo_en.java,Foo_es.java,Foo
8 2024-02-26
编程技术问答社区
编译时创建的类在IntelliJ中显示为不存在
动机: 我想尝试是否编译时间注释处理适合我的问题.它需要开箱即用,没有编译器参数等. 当前状态: 我有: 注释 注释处理器 a .jar包含这些和javax.annotation.processing.processing.processor文件,其中包含 应该发生什么: 它应该自动检测处理器 它应该处理注释并创建一个新类(WiredAnnotated) 我应该能够在汇编的一个步骤中使用此类(不是多个阶段) 我不是要生成此类的编辑(例如 实际发生的事情: 它自动检索处理器 它创建了一个新类(OUT/of/production/*/oferated/) 我能够使用此课程 源代码看起来正确 分解时看起来还可以 编辑器无法解析类(请参阅屏幕截图) 我尝试的是: 重新启动Intellij 无效的缓存 检查注释处理器的输出 屏幕截图: 编译时,它实际上可以按预期工作.我想这与检查错误的目录有关. 有人
14 2024-02-26
编程技术问答社区
是否可以使用 `ElementVisitor` 来遍历方法主体中的语句?
我正在尝试进行自定义注释,以检查是否在用它注释的方法中调用某种方法.类似: @TypeQualifierDefault(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) @interface MutatingMethod { } interface Mutable { void preMutate(); void postMutate(); // other methods } ,然后在某个Mutable类中,我们将有: class Structure implements Mutable { @MutatingMethod void add(T data) { preMutate(); // actual mutation code postMutate(); } } ,如果像add这样的方法的正文@MutatingMethod 不包括preMutat
14 2024-02-26
编程技术问答社区
如何验证一个java的VariableElement可以传递给一个ExecutableElement?
如果我有一个代表类型List变量的javax.lang.model.element.VariableElement,而一个代表具有一种类型List参数的方法的javax.lang.model.element.ExecutableElement,我如何验证我的变量类型可以传递到我的方法类型? 我开始尝试编写javax.lang.model.type.TypeVisitor来尝试比较忽略通配符类型的类型,但是我不确定是否有更简单的方法. 解决方案 很明显,但有点无用的解决方案:让方法呼叫生成(我假设您正在这样做),等到上次汇编回合,并通过返回值RoundEnvironment#errorRaised()检查是否发生了错误.您可能无法生成任何来源. 如果您真的想为UGH……科学执行验证,请参见下文. 您应该已经理解,从技术上讲,将元素分配给另一个元素是不可能的.您必须从元素转到类型(例如TypeMir
10 2024-02-26
编程技术问答社区
如何在运行时提供MapStruct Mapping注解映射的元数据
我们使用 ui模型中指定字段. 我们的MapStructParser可以获取相应的商业模型字段名称并创建所需的标准以对其进行排序. 示例: public interface ModelMapping extends BridgeMapping { @Mapping(source = "zip", target = "plz") UiModel modelToUiModel(BusinessModel model, @MappingTarget UiModel uiModel); } 问题: 如何读取@Mapping(source = "zip", target = "plz")注释并获取source和target值? Mapping - 通道具有RetentionPolicy.CLASS,因此无法通过反射访问. 解决方案 我们通过使用 asm (Bytecode操纵和分析框架)解决了这个问题. 读取Ma
12 2024-02-26
编程技术问答社区
用同一个处理器实例处理不同的注解
我们的项目中有两个注释,我想收集带注释的类并根据两个类列表创建合并的输出. 这仅有一个Processor实例?我怎么知道是否在每个带注释的类中调用Processor实例? 解决方案 框架仅调用Processor.process方法一次(每轮),您可以通过传递的RoundEnvironment参数同时访问两个列表.因此,您可以在相同的process方法调用中处理两个列表. 在SupportedAnnotationTypes注释中执行这两个注释: @SupportedAnnotationTypes({ "hu.palacsint.annotation.MyAnnotation", "hu.palacsint.annotation.MyOtherAnnotation" }) @SupportedSourceVersion(SourceVersion.RELEASE_6) public class Processor extends Abstrac
12 2024-02-26
编程技术问答社区
注释处理工具 <- 检查有效的注释
我有 @ColumnMetadata(index=1) ... @ColumnMetadata(index=2) ... @ColumnMetadata(index=3) ... 我必须检查使用APT索引号是否是唯一的.我不知道该怎么做.我不了解教程,通常我有问题在网上找到材料. 如何做?有教程/关于APT的任何内容吗? 解决方案 您可能想使用 apt 工具的后继产品的可插入注释API.这是开始的简短教程:这大约是您需要采取的步骤来检查您的注释: 创建一个注释处理器,它应该扩展摘要过程. 定义要查找的注释,添加: @SupportedAnnotationTypes(value= {"full.name.of.ColumnMetadata"}) 覆盖process方法. 使用圆形环境参数参数参数参数参数参数.访问源代码的元素.您需要的元素取决于您想做什么. 自上而下的方法: getRootelements 提供所有类,您可以为要检查的特定元素过滤.如
12 2024-02-26
编程技术问答社区
如何在不使用javac编译源的情况下运行注释处理器(Java 8不能使用Apt)。
如何在不使用Javac编译源的情况下运行注释处理器(Java 8无法使用APT)? JAVAC是否有任何可以在不编译所有文件的情况下运行注释处理的参数? 我想做的Javac: 只需找到带注释的元素,然后使用定义的注释处理器使用-processor flag 处理它们 do 不编译任何没有注释的来源 因为我想在Java 8上执行此操作,因此无法将其用于此任务吗?也许是? 解决方案 apt工具在Java 8中不可用./a>,porting apt to java 8不会直接向前. 根据javac -proc:[无,唯一] 控制注释处理和编译是否完成. -proc:none意味着进行汇编,而无需注释处理. -proc:only意味着仅进行注释处理,而无需任何随后的汇编. it 听起来像 -proc:only会做您想做的事.如果不是,那么您需要寻找第三方工具或自己开发工具.
8 2024-02-26
编程技术问答社区
注释处理器,获取方法参数的修改器
我目前正在一个与Java的自定义注释一起工作的项目.我想强迫我的注释用户,如果他用@foo对方法进行了注释,则必须在方法参数列表中声明至少一个final boolean b.因此,它应该看起来像这样: @Foo public void foo(final boolean b) { } @Foo public void bar() { } // This should result in an error 使用我的注释处理器,我可以检索变量的类型,但不能检索最终修饰符.如果我想检索以下代码中所示的修饰符集,则该集合将始终为空,尽管最终修饰符存在于参数上. for (VariableElement parameter : method.getParameters()) { Set modifiers = parameter.getModifiers(); // This set is always empty } 有什么想法,为什么是这种情况
14 2024-02-26
编程技术问答社区
如何在Maven 2中使用自定义注释处理器?
在我们的企业应用程序中,我们正在寻找一种动态方法来从我们的Java类中收集数据.我们使用name属性创建了一个自定义注释接口(@interface).我们想从所有带注释的类中收集此属性的价值. 我为自定义注释创建了AnnotationProcessorFactory和AnnotationProcessor.由于我们使用的是Maven 2,因此我在主项目的pom.xml中添加了以下内容. org.codehaus.mojo apt-maven-plugin 1.0-alpha-5 our.company.api.component.lister.ComponentAnnotationProcessFactory
24 2024-02-26
编程技术问答社区
如何用@Target(ElementType.TYPE_USE)处理注解?
我正在实现注释处理器,以确保标记带注释的元素是实现某个接口的类的实例,或者是实现特定接口的类型的使用: @Documented @Target(value = { ElementType.PARAMETER, ElementType.TYPE_USE }) @Retention(value = RetentionPolicy.RUNTIME) public @interface AuditSubject { } public interface Auditable { // methods that provide data for writing a log entry... } public class Report implements Auditable { } 对于带注释的元素,必须在方法执行后创建日志条目(使用AOP).示例: @CreateLogEntry public Result persist(@AuditSubject Report
38 2024-02-26
编程技术问答社区
Java注释处理:如何知道一个回合是否是最后一个回合?
扩展AbstractProcessor时,有可能覆盖init(...),但是没有"相反的"方法,在处理所有弹药之后都会称呼. 这是一个问题:当您必须将每轮收集的信息附加到相同文件时,您就永远无法关闭文件,因为您永远不会知道何时最后是.因此,文件永远不会关闭并保持空. 使用关闭挂钩也不起作用,挂钩从未被调用. 有什么想法? 解决方案 RoundEnvironment .也许 RoundEnvironment.processingOver RoundEnvironment.processingOver RoundEnvironment.processingOver RoundEnvironment.processingOver RoundEnvironment.processingOver RoundEnvironment.processingOver 方法可以提供帮助. 其他解决方案 看来,在注释处理的背景下,我对"回合"的理解是错误的: 如前所述
14 2024-02-26
编程技术问答社区
用Java 6注解处理器获取通用类型的合格类名
我正在使用JDK 6的注释处理API开发一个小型代码生成器,并且AM卡住了,试图获取同类中字段的实际通用类型.更清楚,假设我有这样的课: @MyAnnotation public class User { private String id; private String username; private String password; private Set roles = new HashSet(); private UserProfile profile; } 这是我的注释处理器类: @SupportedAnnotationTypes({ "xxx.MyAnnotation" }) @SupportedSourceVersion(SourceVersion.RELEASE_6) public class MongoDocumentAnnotationProcessor extend
24 2024-02-26
编程技术问答社区
向前兼容的Java 6注释处理器和SupportedSourceVersion
我正在尝试一个项目的Java 7,并从注释处理器(Bindgen和Hibernate JPA Modelgen)中获取警告: warning: Supported source version 'RELEASE_6' from annotation processor 'org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor' less than -source '1.7' 这是由注释处理器类上的@SupportedSourceVersion(SourceVersion.RELEASE_6)注释引起的.由于它们是用Java 6编译的,因此SourceVersion的最高值是RELEASE_6. Java 7版本的SourceVersion介绍RELEASE_7. 我的问题:注释处理器应该如何处理正向兼容性?是否必须有单独的JDK6和JDK7二进制版本?我在这里不了解其他东西吗? 我只找到了有关此问题的以下信息:
24 2024-02-26
编程技术问答社区