springBoot手动装配,自动装配 实例

  将今天岗培关于springBoot容器装配的知识整理一下,清理一下知识盲区,通过自己建立的小demo加深印象。

1.建立普通的web项目:

  使用spirngBoot后,分分钟可以搭建一个web项目。如下:

springBoot手动装配,自动装配 实例

springBoot手动装配,自动装配 实例

  搭建好后,通过访问地址可以进行验证:

springBoot手动装配,自动装配 实例

2.目录结构:

   这里单独强调一下目录解构的原因在于: SpringBoot默认会扫描当前项目启动类同级,及其下级的类,并进行装配。  不利于这里演示装配的作用,因此这里进行了包路径的划分。 可以理解为不同的模块。

  我的包结构如下:

springBoot手动装配,自动装配 实例

  注意,启动类与我将要写的配置和注解文件,并不在同一个模块下。 

3.手动装配

3.1通过Enablexxx 的注解方式装配

  首先,在其它模块定义的一个注解:

springBoot手动装配,自动装配 实例

  注解内容如下:

springBoot手动装配,自动装配 实例

  相当于导入一个  外部 (指其它项目或者模块) 配置文件  用于当前项目启动时进行装配。 内容如下,主要是用于演示这个步骤:

springBoot手动装配,自动装配 实例

  此时,我们将 定义的注解加在当前的启动类上: 

springBoot手动装配,自动装配 实例

启动程序后可看到效果:

springBoot手动装配,自动装配 实例

3.2通过Selector接口装配

  与上个类似,首先定义一个注解:

springBoot手动装配,自动装配 实例

   同样注意,这里所说的配置文件,依然是项目外配置文件

springBoot手动装配,自动装配 实例

springBoot手动装配,自动装配 实例

springBoot手动装配,自动装配 实例

  此时可以将注解加到我们的启动类上:

springBoot手动装配,自动装配 实例

  启动程序,查看默认条件变量下的表现:

springBoot手动装配,自动装配 实例

  修改条件变量,查看表现:

springBoot手动装配,自动装配 实例

springBoot手动装配,自动装配 实例

3.3条件装配

 同样,首先定义注解:

springBoot手动装配,自动装配 实例

springBoot手动装配,自动装配 实例

  为了与前面的例子解耦,我将其配置文件写在了当前模块下:

springBoot手动装配,自动装配 实例

springBoot手动装配,自动装配 实例

运行后,可以看到控制台并没有变化:

springBoot手动装配,自动装配 实例

将其改为被放行变量 automannn后,可以查看效果:springBoot手动装配,自动装配 实例

springBoot手动装配,自动装配 实例

4.自动装配

   以上的例子都有个特点,那就是需要自己添加注解,开启相应的模块功能。这也是称之为手动的原因。

   为了进一步简化,即啥都不做就能用,可以使用 自动装配

    首先,我们需要知道,任何一个jar包,都有一个  META-INF的文件夹。  

    springboot的自动装配利用了这一点,在 META-INF下存放了一个 spring.factories的文件,里面以键值对的方式存放了相应的自动装配的类。

  为了显示自动装配的作用,我将上面手动装配的注解都暂时先关闭:

springBoot手动装配,自动装配 实例

springBoot手动装配,自动装配 实例

此时,在resources下新建 META-INF文件夹,并新建spring.factories文件,在文件里面设置相应的自动装配的bean:

springBoot手动装配,自动装配 实例

springBoot手动装配,自动装配 实例

springBoot手动装配,自动装配 实例

此时,启动程序,可以看到效果:

springBoot手动装配,自动装配 实例


本demo已经上传至github,地址为: springboot装配demo

希望能帮助到有需要的小伙伴。