[SPRING] 추상 클래스의 주석을 상속합니까?
SPRING추상 클래스의 주석을 상속합니까?
어쨌든 추상적 인 클래스에 주석 집합을 그룹화 할 수 있습니까?이 클래스를 확장하는 모든 클래스가 이러한 주석을 자동으로 할당 했습니까?
적어도 다음은 작동하지 않습니다.
@Service
@Scope(value = BeanDefinition.SCOPE_PROTOTYPE)
class AbstractService
class PersonService extends AbstractService {
@Autowired //will not work due to missing qualifier annotation
private PersonDao dao;
}
해결법
-
==============================
1.대답은 '아니오
대답은 '아니오
Java 주석은 주석 유형에 @Inherited 메타 주석이 없으면 상속되지 않습니다. https://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Inherited.html.
Spring @Component 어노테이션에는 @Inherited가 없기 때문에 각 컴포넌트 클래스에 어노테이션을 넣어야한다. @Service, @Controller 및 @Repository도 아닙니다.
-
==============================
2.짧은 대답은 다음과 같습니다. 예에서 언급 한 주석이 있으면 안됩니다.
짧은 대답은 다음과 같습니다. 예에서 언급 한 주석이 있으면 안됩니다.
긴 대답 : java.lang.annotation.Inherited라는 메타 주석이 있습니다. 어노테이션 그 자체가이 어노테이션으로 어노테이션을 작성한 경우, 클래스에 어노테이션이 추가되면, 그 서브 클래스도 함축적으로 자동적으로 그 어노테이션이 붙습니다.
그러나 스프링 소스 코드에서 볼 수 있듯이 @Service 및 @Scope 주석에는 @Inherited가 주석으로 표시되지 않으므로 클래스의 @Service 및 @Scope가 하위 클래스에 상속되지 않습니다.
어쩌면 이것이 Spring에서 고칠 수있는 것입니다.
-
==============================
3.내 프로젝트에이 코드 조각이 있는데, 서비스로 주석을 달지는 않았지만 제대로 작동합니다.
내 프로젝트에이 코드 조각이 있는데, 서비스로 주석을 달지는 않았지만 제대로 작동합니다.
public abstract class AbstractDataAccessService { @Autowired protected GenericDao genericDao; }
과
@Component public class ActorService extends AbstractDataAccessService { // you can use genericDao here }
따라서 추상 클래스에 주석을 넣을 필요는 없지만 그렇게해도 @Component 또는 @Service 주석이 상속되지 않는 모든 하위 클래스에 주석을 추가해야합니다.
from https://stackoverflow.com/questions/21409338/inherit-annotations-from-abstract-class by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring MVC에서 동일한 @RequestMapping에있는 매개 변수에 대해 다른 값을 어떻게 매핑합니까? (0) | 2019.02.17 |
---|---|
[SPRING] Spring Data @CreatedDate 주석이 작동하지 않습니다. (0) | 2019.02.17 |
[SPRING] Spring MVC에서 컨트롤러와 액션 메소드를 기반으로 URL을 생성하려면 어떻게해야합니까? (0) | 2019.02.17 |
[SPRING] Spring 요청 범위 빈 (0) | 2019.02.17 |
[SPRING] Javascript에서 모델 속성에 액세스하는 방법 (0) | 2019.02.17 |