2017-04-20 56 views
1

我有一個@RestController,它有一個注入的@Service bean。我無法理解控制器及其服務的使用壽命。它是基於每個請求的嗎?還是比那更長?我對Spring很陌生,如何管理bean。Spring Boot @RestController和注入@Service的壽命是多少?

@RestController 
class AppController { 

    private final AppService appService 

    AppController(AppService appService) { 
     this.appService = appService 
    } 
    ... 
} 

@Service 
class AppService { 

    private final DataSource dataSource 

    AppService(DataSource dataSource) { 
     this.dataSource = dataSource 
    } 

    private Sql getSql() { 
     new Sql(dataSource.connection) 
    } 
    ... 
} 

我想問的原因是因爲我們實例化服務中的SQL連接,我很好奇,如果我可以memoize的和重複使用的連接,或者如果我將每個請求需要立即關閉一個實例。

春季啓動1.5.2

+0

如果您沒有爲Spring組件指定範圍,則默認範圍是'singleton'。 – Strelok

回答

0

@RestController@Controller@ResponseBody的簡寫。它尊重MVC principles

@Service@Component的專長,並且尊重Business Service Facade pattern(在覈心J2EE模式意義上)。

因此,這些註釋的使用壽命是整個應用程序的使用壽命。

您還可以閱讀Spring @Component, @Repository, @Service and @Controller Annotations瞭解更多信息。

+0

這非常有幫助。我猜這個問題的基礎是,我正在通過這種方法獲取數據庫池連接耗盡。我應該編輯原始問題還是創建一個新問題? –

+1

如果這是一個不同的問題,請創建一個新問題。 –

相關問題