谈谈SpringBoot自动装配的魔力
发布时间:2021-11-19 10:15 所属栏目:13 来源:互联网
导读:目录 一、 springBoot自动配置的好处1、 回想一下当你在使用spring来搭建一个项目的时候2、这时我们会有一个疑问二、@Conditional注解相关介绍1、@Conditional小demo三、自定义一个条件配置类/springBoot自定义注解1、简单解释@Condition注解家族2、自定义条
目录 一、 springBoot自动配置的好处1、 回想一下当你在使用spring来搭建一个项目的时候2、这时我们会有一个疑问二、@Conditional注解相关介绍1、@Conditional小demo三、自定义一个条件配置类/springBoot自定义注解1、简单解释@Condition注解家族2、自定义条件注解 一、 springBoot自动配置的好处 1、 回想一下当你在使用spring来搭建一个项目的时候 你需要编写很多的有关spring的xml。例如读取属性配置的bean、数据源bean、事务管理工厂bean、mybatis与spring整个的bean等等。再次利用该框架搭建项目的时候,又是周而复始的操作。 但是现在当你使用springBoot搭建项目的时候,你会发现所有的配置你都不用去编写就可以帮你去实现(仅仅需要在连接外部数据库的时候需要进行配置,其实如果使用内嵌数据库h2 则你完全不必需要application.properties配置文件)。 你可以在你的具体的业务代码中使用@AutoWried @Resource注解将数据源,事务工厂等注入到业务层,像是你自己配置那样。 2、这时我们会有一个疑问 springBoot到底做了什么让我们可以不用配置,而使用那些功能对象。 其实springBoot使用基于条件的自动注入原理,即为当满足某个条件的时候,spring会实例化该注解对应的bean,将其放入到Srping上下文中,让你可以轻松的使用。SpringBoot实现条件配置离不开它的核心组件@Conditional。 下面我们慢慢的来揭开springBoot自动配置的神秘面纱。 二、@Conditional注解相关介绍 1、@Conditional小demo @Conditional 是个什么鬼,不解释来个小的demo大致了解一下 描述一下demo场景 :Life实体bean在特定条件(@Conditional)下,被springBoot初始化,并放置到spring上下文环境中。 1.1、 Life 实体类 /** * 梦想存在,生命才有意义 */ public class Life { //工作 private String work; //学习 private String study //爱 private String love; //省略seter /geter } 1.2、 编写我们自己的条件匹配规则 /** * 实现ConfigurationCondition(该接口继承了Condition) */ public class MyTestConditional implements ConfigurationCondition { /** * 设置使用该类进行解析的时机 * 1、REGISTER_BEAN:会在注册Bean的时候进行condition的解析 * 即为在对应的@Bean注解和@condition注解组合使用的时候 进行条件的判断 * @Bean注解对应spring 的xml的<bean/>标签 * 2、PARSE_CONFIGURATION:会在解析@Configuration时进行condition的解析 * 即为在对应的@Configuration注解和@condition注解组合使用的时候 进行条件的判断 * @Configuration注解对应spring 的xml的<beans/>标签 * @return */ @Override public ConfigurationPhase getConfigurationPhase() { return ConfigurationPhase.REGISTER_BEAN; } /** * 该方法为条件判断的核心 只有该方法返回为true 则表示其条件成立 ,执行相应的配置 * @param conditionContext * @param annotatedTypeMetadata * @return */ @Override public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) { return false; //表示验证不通过 } 该类实现了ConfigurationCondition 有如下两个方法 1、 getConfigurationPhase() 该条件规则起作用的时候 2、 matches()条件匹配规则 这里为了演示不做具体的逻辑条件的处理 返回一个布尔值,如果为ture 则表示条件成立 配置生效 反之不生效。 (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读