2012-01-31 65 views

回答

2

如果您只需要此單一初始化點的自動裝配資源,您可以簡單地@Autowire一種具有所需資源的方法。

@Autowired 
public void initialized(Database database){ 
    resources = resource.loadDatabaseRecources(); 
} 

這將Database後的數據庫實例自動裝配這種方法完成初始化。

1

解決方法簡單而優雅。

從數據庫中提取數據加載到單獨的事務性方法不同類。然後注入該類並在@PostConstruct中使用它。

所以不是:

@Resource 
private DataSource ds; 

@PostConstruct 
public void init() { 
    ds... 
} 

你:

@Resource 
private Dao dao; 

@PostConstruct 
public void init() { 
    dao.readSomeStuff(); 
} 

其中Dao有:

@Resource 
private DataSource ds; 

@Transactional 
public Stuff readSomeStuff() { 
    ds... 
} 

這引入了一個間接的另一個層面,但提取的DAO insto單獨的類可能根據你的架構,這是一個好主意。