‘AnnotationSpec.builder’ is used to add properties to the annotaitons.
Example
MethodSpec toStringSpec = MethodSpec.methodBuilder("connectionString").addModifiers(Modifier.PUBLIC)
.addStatement("return jdbc:h2:file:~/db/myOrg.db;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;")
.returns(String.class).addAnnotation(AnnotationSpec.builder(Resource.class)
.addMember("name", "$S", "datasource").addMember("shareable", "false").build())
.build();
Above snippet generates following code.
@Resource(
name = "datasource",
shareable = false
)
public String connectionString() {
return jdbc:h2:file:~/db/myOrg.db;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;;
}
Find the below working application.
AnnotationDemo2.java
package com.sample.app;
import java.io.IOException;
import javax.annotation.Resource;
import javax.lang.model.element.Modifier;
import com.squareup.javapoet.AnnotationSpec;
import com.squareup.javapoet.JavaFile;
import com.squareup.javapoet.MethodSpec;
import com.squareup.javapoet.TypeSpec;
public class AnnotationDemo2 {
public static void main(String args[]) throws IOException {
MethodSpec toStringSpec = MethodSpec.methodBuilder("connectionString").addModifiers(Modifier.PUBLIC)
.addStatement("return jdbc:h2:file:~/db/myOrg.db;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;")
.returns(String.class).addAnnotation(AnnotationSpec.builder(Resource.class)
.addMember("name", "$S", "datasource").addMember("shareable", "false").build())
.build();
String className = "HelloWorld";
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className);
classBuilder.addModifiers(Modifier.PUBLIC, Modifier.FINAL);
classBuilder.addMethod(toStringSpec);
TypeSpec helloWorldTypeSpec = classBuilder.build();
String packageName = "com.sample.app";
JavaFile javaFile = JavaFile.builder(packageName, helloWorldTypeSpec).build();
javaFile.writeTo(System.out);
}
}
Generated code
package com.sample.app;
import java.lang.String;
import javax.annotation.Resource;
public final class HelloWorld {
@Resource(
name = "datasource",
shareable = false
)
public String connectionString() {
return jdbc:h2:file:~/db/myOrg.db;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;;
}
}
No comments:
Post a Comment