springBoot手动装配,自动装配 实例
将今天岗培关于springBoot容器装配的知识整理一下,清理一下知识盲区,通过自己建立的小demo加深印象。
1.建立普通的web项目:
使用spirngBoot后,分分钟可以搭建一个web项目。如下:
搭建好后,通过访问地址可以进行验证:
2.目录结构:
这里单独强调一下目录解构的原因在于: SpringBoot默认会扫描当前项目启动类同级,及其下级的类,并进行装配。 不利于这里演示装配的作用,因此这里进行了包路径的划分。 可以理解为不同的模块。
我的包结构如下:
注意,启动类与我将要写的配置和注解文件,并不在同一个模块下。
3.手动装配
3.1通过Enablexxx 的注解方式装配
首先,在其它模块定义的一个注解:
注解内容如下:
相当于导入一个 外部 (指其它项目或者模块) 配置文件 用于当前项目启动时进行装配。 内容如下,主要是用于演示这个步骤:
此时,我们将 定义的注解加在当前的启动类上:
启动程序后可看到效果:
3.2通过Selector接口装配
与上个类似,首先定义一个注解:
同样注意,这里所说的配置文件,依然是项目外配置文件。
此时可以将注解加到我们的启动类上:
启动程序,查看默认条件变量下的表现:
修改条件变量,查看表现:
3.3条件装配
同样,首先定义注解:
为了与前面的例子解耦,我将其配置文件写在了当前模块下:
运行后,可以看到控制台并没有变化:
将其改为被放行变量 automannn后,可以查看效果:
4.自动装配
以上的例子都有个特点,那就是需要自己添加注解,开启相应的模块功能。这也是称之为手动的原因。
为了进一步简化,即啥都不做就能用,可以使用 自动装配。
首先,我们需要知道,任何一个jar包,都有一个 META-INF的文件夹。
springboot的自动装配利用了这一点,在 META-INF下存放了一个 spring.factories的文件,里面以键值对的方式存放了相应的自动装配的类。
为了显示自动装配的作用,我将上面手动装配的注解都暂时先关闭:
此时,在resources下新建 META-INF文件夹,并新建spring.factories文件,在文件里面设置相应的自动装配的bean:
此时,启动程序,可以看到效果:
本demo已经上传至github,地址为: springboot装配demo
希望能帮助到有需要的小伙伴。