寫作時間:2019-08-19
Spring Boot: 2.1 ,JDK: 1.8, IDE: IntelliJ IDEA
說明
Spring核心技能有兩個,Inversion of Control(IOC)控制翻轉,Aspect-oriented Programming (AOP) 切面編程。
- 其中IOC也叫dependency injection (DI)依賴注入。也就是初始化對象叫做Bean不需要自己new出來,交給框架的Factory自動生產即可。
org.springframework.beans
和org.springframework.context
這兩個packages 是Spring Framework’s IoC 的基礎容器container. BeanFactory interface接口提供了高級配置機制,使可以管理任何類型的對象object. ApplicationContext是BeanFactory的子接口.
IOC 圖解
- AOP的思想一就是模塊化所有的類,這樣子有個好處就是你可以按需加載項目需要的組件。思想二就是可以給方法前面,中間,後面增強功能。
現在都是用註解來配合處理。所以這節就複習常用的註解。
Java Config 相關注解
- @Configuration
標明當前類爲配置類 - @ImportResource
把XML的文件配置信息注入進來 - @ComponentScan
告訴整個Spring的容器,我裏面可以掃描哪些package下的Bean配置 - @Bean
在Java @Configuration的類當中,如果方法被標註爲@Bean, 它的返回就可以當做Spring的配置,存在於 ApplicationContext - @ConfigurationProperties
把key=value
的配置文件的信息,讀取並自動封裝成實體類。
Bean定義相關注解
- @Component
所有Java Bean都可以通過Component來定義,在類上面定義即可。 - @Repository
標識數據庫訪問層的Bean - @Service
標識服務層的Bean - @Controller
Web層的Bean - @RestController
Restful的Bean,由@Controller,@ResponseBody組合而成 - @RequestMapping
定義方法是在訪問url下面相應的
Bean注入相關注解
- @Autowired
按照類型進行查找注入進來 - @Qualifier
在整個上下文當中,有多個同類型的Bean,指定Bean不同的名字來注入。需要配合@Autowired使用 - @Resource
指定Bean不同的名字來注入,單獨使用即可,不需要@Autowired。 - @Value
在Bean中注入一些常量,或者配置中的信息。
Lombok / Log
Project Lombok 能夠自動嵌入IDE和構建工具,提升開發效率
常用功能
- @Getter / @Setter
自動生成Getter, Setter - @ToString
把所有屬性生成一個String - @NoArgsConstructor / @RequiredArgsConstructor / @AllArgsConstructor
生成構造方法 - @Data
包含@Getter / @Setter 和 @ToString - @Builder
幫助生成構造方法 - @Slf4j / @CommonsLog / @Log4j2
日誌輸出
參考
https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#spring-core