Spring5-完全注解开发【之】Spring5介绍、实现IOC、单元测试
1.Spring5框架概述
-
Spring是一个开源框架、是一个轻量级容器 -
特点
- Spring 框架方便组合其他技术,是Java生态的重要支撑者
- 管理Bean的生命周期,支持依赖注入,简化开发
- 支持面向切面编程 ,进一步解耦
- 方便和其他框架进行整合,如:内置整合 junit , 方便程序测试;支持 MyBatis 等数据库操作框架
- 支持 声明式事务 和 编程式事务
- 极大程度,降低后台服务开发的代码量 和 开发难度
- Spring 框架是模块化的,存在 20 多个不同的模块
- 核心模块: context、core (IOC)、AOP、ORM、DAO、web、web mvc、tx
- 一些模块是相互依赖的。例如 spring-context 依赖于 spring-beans,而 spring-beans 又依赖于 spring-core。
spring-aop spring-context-indexer spring-instrument spring-orm spring-web
spring-aspects spring-context-support spring-jcl spring-oxm spring-webflux
spring-beans spring-core spring-jdbc spring-r2dbc spring-webmvc
spring-context spring-expression spring-jms spring-test spring-websocket
spring-tx spring-messaging
2.IOC实现(将类交由Spring管理)
2.1.引入依赖(spring-context)
- spring-context (core、bean、aop、jcl、expression)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.16</version>
</dependency>

2.2.声明注解(@Service、@Component、@Repository、@Controller)
- Spring 提供了4个注解,用于标识将类交由Spring管理
- 但是
四个注解的最终实现结果是一致的,只是官方定义的各自的使用场景 - @Service:将当前类认为是一个
服务 类,并交由Spring管理。 - @Component:将当前类认为是一个
组件 类,并交由Spring管理。 - @Repository:将当前类认为是一个
数据 类,并交由Spring管理。 - @Controller:将当前类认为是一个
控制器 类,并交由Spring管理。
- 如图:
UserController类 和 UserService ,理论上可以使用4个注解中的任意一种 - 但是为了规范,还是分别使用 @Controller 和 @Service ,这样更容易阅读
 
2.3.依赖注入(@Autowired、@Qualifier)
- 使用 @Autowired、@Qualifier 实现依赖对象自动注入
- @Autowired:只存在一种类型时,通过类型自动注入
 
- @Autowired + @Qualifier:一个接口存在多种实现时,注入接口实例对象时要指定名称注入
- 类默认名称采用驼峰命名法,可以主动设置命名
 
2.4.声明 Bean 实例(@Bean、@Configuration)
- @Configuration:声明当前类为,配置类,并交由Spring管理
- @Bean : 标记在方法上,将返回对象交由Spring管理

2.5.包扫描,注解生效(@ComponentScan)
- 想要注解生效,必须在启动类上声明,包扫描路径,默认为当前路径下全部包
- @ComponentScan :定义扫描位置,默认为当前路径下全部包

3.单元测试
3.1.引入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.16</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.5.2</version>
<scope>compile</scope>
</dependency>

3.2.测试注入情况
- 测试声明与依赖注入

4.完整源码
《目录:Spring5-完全注解开发》
《目录:从零手写Tomcat》
《幕》
- 留白 —<老吉>
- ~ 今 ~ ? ~ ?????????? ?????????? ???????
|