2017-05-21 166 views
-1

可以說我有一個對象X的模型,該對象在Spring Boot的幫助下實現了所有的CRUD操作。創建非彈簧引導對象

現在,我需要能夠使用標準的POJO來編輯這個對象。該POJO看起來是這樣的:

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

到目前爲止,我已經使用@Configurable@Component甚至@Service試過,但那些都可以@AutowireXRepository

我該怎麼辦?

+0

是富Spring所管理的這個類? XRepository是一個spring-data存儲庫嗎? –

+0

Foo不是由春天管理的。如果可能,我想要做的只是'Foo f = new Foo(); f.whatever()' – Alberto

+0

'@ Autowired'不適用於不受Spring管理的對象。 您可以手動將xDAO注入您的Foo(在Spring DI容器外): 'Foo foo = new Foo(); foo.xDAO = ctx.getBean(XRepository.class);' –

回答

0

你描述的是不可能的。只有當對象由Spring管理時,組件纔可以連線。在你的情況下,它不是,因此不可能在任何依賴中自動裝載。你有各種選擇。這裏有一些:

  1. 在Foo類以外使用存儲庫。協調由Spring管理的另一 類的操作
  2. 通行證庫由類依賴於 富在構造由Spring管理
  3. 這有點哈克,可能不推薦,但你可以讓庫靜態在富可變的,由彈簧設置它管理的組件中類似@PostConstruct

在我看來,最好是使用選項1

-1

我認爲我沒有表達自己足夠,無論哪種方式我找到了解決問題的辦法米

解決方案是here

我只聲明Foo作爲@Service,然後我就@AutowiredFoo

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

然後調用使用@Autowired註釋

@Autowired Foo foo 
foo.doThings();