2022-08-30
原文作者:键盘林

首先声明该系列不适合零基本的程序员浏览!

总体系列流程总体分析

Spring注解驱动开发:

容器:

AnnotationConfigapplicationContext

组件添加

组件赋值

组件注入

AOP

声明式事务

扩展原理:

BeanFactoryPostProcesor

BeanDefinitionRegistryPostProcessor

ApplicationListener

Spring容器创建过程

Web:

servlet3.0

异步请求

容器注解开发

创建相关maven项目:

添加spring的相关jar包

202203062026186161.png

在我们古老的开发模式中,我们采用的是在xml中写bean的方式注入

202203062026215482.png

创建一个person类

202203062026232393.png

在我们古老的方式中我们是在xml文件中给Person赋值,如下所示:

202203062026247054.png

在古老的方式中,我们在方法中获取xml对象(ApplicationContext),然后调用它的getBean方法得到相关对象对应的参数

202203062026264555.png

运行结果:

202203062026279826.png

上面是比较古老的方式,现在我们采用注解开发进行对比

简单来说,现在我们采用java代码的方式取代了xml文件的配置方式,使得开发更加友好

通过@Configuration来告诉后台我是一个配置类相当于之前的xml文件

202203062026290257.png

添加bean

202203062026311358.png

main方法中的修改

古老的xml方式配置传入的是xml文件,而现在我们传入的是配置类(简单来说原理都差不多)

202203062026329359.png

2022030620263463510.png

查看运行结果:

2022030620263652911.png

获取person在容器中的类型:

打印出Person这个类在容器中的名字

2022030620263796812.png

2022030620263976713.png

运行结果:

2022030620264140114.png

那如果我要改名呢,只需要把方法名改了就行

2022030620264241915.png

在运行一次,它的id名就改变了

2022030620264405716.png

获取直接修改@bean里面的值

2022030620264537317.png

运行:

2022030620264682218.png

传统方式的包扫描

2022030620264796019.png

现在注解方式的包扫描:

添加包扫描注解:@ComponentScan,该注解将会扫描“com.atguigu”下面所有@Controller、@Service、@Repository、@Component

2022030620265026020.png

com.atguigu下面的类

创建controller层,注解上@controller

2022030620265177421.png

创建service层,注解上@Service

2022030620265297022.png

创建dao层,注解上@Repository

2022030620265419523.png

创建Test类:

加载MainConfig配置类

2022030620265525524.png

获取容器中所有的bean的名字

2022030620265692325.png

打印所有bean的名字

2022030620265820126.png

添加junit的jar

2022030620265997827.png

2022030620270126528.png

运行:

2022030620270290629.png

阅读全文