在 Spring 框架中,Bean 是構成應用程式主要的概念和核心
它們由 Spring IoC(Inversion of Control)
容器管理
簡單來說,Bean 就是一個被 Spring 容器初始化、組裝和管理的 Java 對象
<bean id="myBean" class="com.example.MyBean"/>
@Configuration
public class AppConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
@Component
public class TodoConfig {
}
Spring 定義了幾種 Bean 的作用域,注意到有幾個是 web
相關的 (專用的)
在程式碼裡面可以使用 @Scope
來指定作用域,而且 IDE 會有提示
@Component
@Scope("singleton")
public class TodoConfig {
}
@Component
@Service
@Repository
@Controller
@RestController
@Autowired
@Configuration
@Bean
@Bean
只是建立 Spring Bean 的一種方式,並不是等於 Spring 裡面的 Bean,要小心不要誤會了 XD
Spring 的核心功能之一是依賴注入。它允許我們聲明組件之間的依賴關係,而不是在程式碼中建立這些依賴
簡單來說,可以把 Bean 註冊到 Spring 容器中,然後在其它地方注入使用
@RestController
public class HelloController {
private final TodoConfig todoConfig;
public HelloController(TodoConfig todoConfig) {
this.todoConfig = todoConfig;
}
@GetMapping("/randomNumber")
public String getRandomNumber() {
return String.valueOf(todoConfig.getRandomNumber());
}
}
@RestController
public class HelloController {
private TodoConfig todoConfig;
@GetMapping("/randomNumber")
public String getRandomNumber() {
return String.valueOf(todoConfig.getRandomNumber());
}
@Autowired
public void setTodoConfig(TodoConfig todoConfig) {
this.todoConfig = todoConfig;
}
}
@RestController
public class HelloController {
@Autowired
private TodoConfig todoConfig;
@GetMapping("/randomNumber")
public String getRandomNumber() {
return String.valueOf(todoConfig.getRandomNumber());
}
}
Spring 管理 Bean 的整個生命週期
主要階段包括
不過基本上,大部分情況下都不太需要了解或關注這些流程,會使用就好
我們可以通過實現特定的 inteface 來干預 Bean 的生命週期:
@Component
@Scope("singleton")
public class TodoConfig implements InitializingBean, DisposableBean {
@PostConstruct
public void init() {
System.out.println("Bean is going through init.");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("Bean's properties are set.");
}
@PreDestroy
public void shutdown() {
System.out.println("Bean will destroy now.");
}
@Override
public void destroy() throws Exception {
System.out.println("Bean is destroying.");
}
}
理解 Spring 的 Bean 管理是開發 Spring Boot 應用程式的基礎,Bean 管理也是 Spring 依賴注入和控制反轉的核心
掌握這些概念將幫助你更好地設計和實現 Spring Boot 應用程式,提高程式碼的可維護性和可測試性
在實際開發中,合理利用這些特性可以大大提高開發效率和應用靈活性
同步刊登於 Blog 「Spring Boot API 開發:從 0 到 1」Day 08 Spring 和 Spring Boot 中 Bean 的概念
我的粉絲專頁
圖片來源:AI 產生