2013-07-23 1 views
0

코어 Java 프레임 워크에서 작업하고 있습니다. 나는 클래스 내부에 직접 인스턴스를 생성하고 싶지 않기 때문에 의존성 주입을 사용하고자한다.사용자 지정 주석을 사용하여 종속성 주입 구현

인스턴스에 대한 사용자 지정 주석을 선언 할 생각입니다. 인스턴스를 생성하고 필드에 주입하는 콜백 함수가 있습니다.

커스텀 어노테이션을 생성하려고했습니다. 그러나 선언 된 주석에 대한 콜백을 직접 얻을 방법이없는 것처럼 보입니다. 그래서, 나는 그 클래스를 스캔하려고했습니다. 그러나이 문제로 끝났습니다. Java Scanning Class for Annotation using Google Reflections

이것이 올바른 방법 일지 알려주세요.

+1

그래서 누가 주석을 처리하고 개체를 만들고 삽입합니다 autowiring에 + DI를 사용하여 위의 DAO 인스턴스에

@Repository public class FooDAO { ... } 

를 주입 참조 : 스프링 컨테이너는 자동으로 싱글 기본 생성자를 사용하여이 빈의 인스턴스를 만들 것인가? 코드 예제를 사용하여 정교하게 도울 수 있습니다. –

+0

주석 필드에 만들고 콜백 메서드를 삽입 할 수 있는지 궁금합니다. –

+0

커스텀 주석을 많이 사용하지는 않지만 주석에 대한 콜백 메서드를 얻을 수 있다고 생각하지 않습니다. 하나의 옵션은'AspectJ'를 사용하는 것입니다. 그래서 여러분은 이러한 클래스에 주석을 달고 어떤면에서 마술을 할 수 있습니다. –

답변

1

질문에 'Spring'태그가 지정되어 있으므로 Spring Framework의 bean 주석 (@Component/@Service/@Repository/...), 클래스 경로 검색 및 @Autowired를 사용할 수 있습니다. 예를 들어

: 당신의 스프링 구성 XML을

설정 클래스 경로 검색 :

<context:component-scan base-package="com.mycompany.myapp" /> 

이 빈을 만들기 스캔 할 수 있습니다.

@Service 
public class FooService { 

    @Autowired private FooDAO fooDAO; 

    ... 
} 
+0

결국 jar로 패키징되어 결국 다른 프로젝트에서 사용되는 프레임 워크를 만들려고합니다. 그래서 내 프레임 워크에 스프링 종속성을 설치하려고하면 jar 파일로 내 보내어 문제가 발생하지 않을까요? –

+0

Maven과 같은 의존성 관리 도구를 사용한 경우가 아닙니다. 프로젝트가 필요로하는 의존성을 선언 할 수 있으며 pulling 프로젝트는 이러한 모든 종속성을 전이 적으로 가져옵니다. – gerrytan

+0

스프링 프로젝트를 만들고 비 프로젝트 (프로젝트 요구 사항 중 하나)에서 가져 와서이 프로젝트를 가져 왔습니다. 그리고 그것은 작동하는 것 같습니다. 항아리가 모든 의존성에 포함 된 것처럼 보입니다. 그러나 항아리 크기를 확인했을 때, 그것은 단지 몇 kb입니다! 이에 대한 합리적인 설명이 있습니까? –

관련 문제