====== SpringFramework Meta Annotation ====== * [[:springframework|Spring Framework]] 4 버전부터 메타 어노테이션에서 alias 기능 생김 ===== 예: @Transactional override ===== * DataSource와 TransactionManager가 여러개일 때 각 트랜잭션 매니저마다 별도의 ''@Transactional''을 만들어주고 싶을 때 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented @Transactional("myDbTransactionManager") public @interface MyDbTransactional { @AliasFor(annotation = Transactional.class) Propagation propagation() default Propagation.REQUIRED; @AliasFor(annotation = Transactional.class) Isolation isolation() default Isolation.DEFAULT; @AliasFor(annotation = Transactional.class) int timeout() default -1; @AliasFor(annotation = Transactional.class) boolean readOnly() default false; ... } ===== 참조 ===== * [[https://github.com/spring-projects/spring-framework/wiki/spring-annotation-programming-model|Spring Annotation Programming Model]] * [[https://www.logicbig.com/tutorials/spring-framework/spring-web-mvc/meta-annotation.html|Spring MVC- What are meta-annotations? How to create a custom annotation with meta-annotations?]] * [[https://www.logicbig.com/tutorials/spring-framework/spring-core/alias-for-annotation.html|@AliasFor annotation Examples]]