iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
1
Modern Web

30天帶你潮玩Spring Boot Zone系列 第 15

[Day15] – Spring Boot @ComponentScan與@EntityScan

閱讀時間: 5分鐘

在Day 14, 大家都會見到我為大家講解的例子,在項目的核心java(即係含有@SpringBootApplication的java, 每個項目只有一個java是有@SpringBootApplication) 有提到@ComponentScan與@EntityScan。

究竟它們是有什麼用的?
首先@ComponentScan的目的是透過掃描package去檢查有什麼class會被註冊為Spring的bean。而註冊為bean的意思是class的實例的生命週期及注入等過程交由Spring容器(Spring IoC Container)管理。
@ComponentScan會掃描包含以下注解的class:
@Component,@Service,@Controller,@RestController,@Repository,@Configuration

而在Day 14的例子中:

@ComponentScan({"com.example.demo","com.example.model","com.example.controller","com.example.service","com.example.repository"})

由於每個package都有被需要讀取的class,所以要將每個package加在@ComponentScan()的括號內,用”,”去分隔。
當完成添加及儲存後,再運行Spring Boot 應用程式時,系統就會去掃描@ComponentScan()的括號內的package,如果有找到@Component,@Service,@Controller,@RestController,@Repository,@Configuration,就會去讀取相關的class。

@EntityScan
雖然大家也看到@EntityScan,但在Day 14的例子中是沒有作用的。不過也想跟大家說說,它是透過掃描package去檢查有什麼class會被註冊為持久層所管理的實體類(entity class)。而只有包含注解@Entity的class才會被讀取。


上一篇
[Day14] – Spring Boot 與MySQL數據庫的應用教學
系列文
30天帶你潮玩Spring Boot Zone15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
fredfu5431
iT邦新手 5 級 ‧ 2021-10-21 10:00:05

前輩您好:
請問為什麼會在資料庫中插入二筆相同的資料? 謝謝.

我要留言

立即登入留言