写作时间: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
日志输出
pom.xml add dependency
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
参考
https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#spring-core