2017-05-21 11 views
-1

오브젝트 X에 대한 모델이 있다고 가정하면,이 오브젝트는 스프링 부트의 도움으로 모든 CRUD 조작을 구현합니다.비 (非) 스프링 부트 오브젝트 생성

이제 표준 POJO를 사용하여이 개체를 편집 할 수 있어야합니다. 지금까지 내가 @Configurable, @Component 심지어 @Service를 사용하려고했습니다

public class Foo { 
    @Autowired 
    private XRepository xDAO; 
    /* 
     Do whatever I want with X and then save it again in the DB using xDAO 
    */ 
} 

을, 그러나 그 중 어느 것도 내 XRepository@Autowire 수 있습니다 다음 POJO는 다음과 같습니다.

어떻게해야합니까?

+0

이 푸 스프링에 의해 관리되는 @Autowired 주석을 사용하여 호출 :

는 난 단지 그때 난 그냥 @AutowiredFoo하는 @ServiceFoo를 선언? XRepository는 스프링 데이터 저장소입니까? –

+0

Foo는 봄에 관리되지 않습니다. 가능하다면, 단지 Foo f = new Foo()입니다. f.whatever()' – Alberto

+0

'@ Autowired'는 봄에 의해 관리되지 않는 객체에는 작동하지 않습니다. xDAO를 Foo에 수동으로 sorta 주입 할 수 있습니다 (스프링 DI 컨테이너 외부). 'Foo foo = new Foo(); foo.xDAO = ctx.getBean (XRepository.class);' –

답변

0

설명하는 것은 불가능합니다. Spring이 객체를 관리하는 경우에만 구성 요소를 연결할 수 있습니다. 귀하의 경우에는 그렇지 않으므로 어떤 종속성에서도 자동 응답 할 수 없습니다. 다양한 옵션이 있습니다. 다음은 몇 가지 예입니다.

  1. Foo 클래스 외부의 저장소를 사용하십시오. 스프링에 의해 관리되는 다른 클래스의 작업을 조율
  2. Spring에 의해 관리되는 클래스로 생성자 푸에 의존 등
  3. 패스 저장소이 다소 해키 아마 권장하지
  4. 입니다
  5. 하지만 당신은 저장소 정적을 만들 수 있습니다 푸에 변수 봄하여 설정 내 생각에

@PostConstruct 같은 것을에서 구성 요소를 관리하는 가장 좋은 옵션 1.

-1

내가 충분히 자신을 표현하지 않았다고 생각 중 하나의 방법을 사용하는 것입니다 내 proble에 대한 해결책을 찾았습니다. 엠.

해결책은 here입니다.

@Autowired 
public class Foo { 
@Autowired 
    private XRepository xDAO; 
    //some code 
} 

그럼이 클래스는

@Autowired Foo foo 
foo.doThings();