Springboot学习日记(三)自动装配

Spring模式注解装配

定义:一种用于声明在应用中扮演“组件”角色的注解。
举例:@Component、@Service、@Configuration
装配:<context:component-scan>(Spring 2.5) @ComponentScan(Spring 3.0)
复制代码

Component的派生性:

定义一级注解类,用的是annotation方式:
复制代码
Springboot学习日记(三)自动装配
@Target @Retention @Document都是java自带的注解:
复制代码
Springboot学习日记(三)自动装配
Springboot学习日记(三)自动装配
Springboot学习日记(三)自动装配
Springboot学习日记(三)自动装配

@Repository是spring的注解,标注为仓储。

Springboot学习日记(三)自动装配

新建一个类,注入前面写好的一级组件。

Springboot学习日记(三)自动装配

完成引导类,注入bean

Component的层次性:

Springboot学习日记(三)自动装配
Springboot学习日记(三)自动装配

再次运行,结果不变。

Spring @Enable模块装配

定义:具备相同领域的功能组件集合,组合所形成一个独立的单元
举例:@EnableWebMvc @EnableAutoConfiguration等
实现:注解方式、编程方式

注解驱动方式:
复制代码
Springboot学习日记(三)自动装配

configuration,里面配置了Bean:

Springboot学习日记(三)自动装配

获取bean:

Springboot学习日记(三)自动装配

接口编程方式:

Springboot学习日记(三)自动装配

这里导入的是上面Seletor:

Springboot学习日记(三)自动装配

在seletor中就可以加一些分支、判断和其他的方法。

接下来的步骤跟注解方式一样。

HelloWorldImportSelector -> HelloWorldConfiguration -> HelloWorld

相比较下,注解方式方便,但是编程方式比注解方式更为灵活。

Spring 条件装配

定义:Bean装配的前置判断
举例:@Profile、@Conditional
实现:注解方式、编程方式
复制代码

@Profile:配置化条件装配 @Conditional: 编程条件装配

@Profile(‘java 8′) Lambda 求和:

Springboot学习日记(三)自动装配

新建一个service接口

看到红框部分我都蒙了,以为是lambda表达式,查一下才知道这个叫做“变长变量”,是jdk1.5的新特性。可以传入多个值,类型就是前面制定的Integer。

实现这个接口,进行求和

Springboot学习日记(三)自动装配

用lambda进行求和。

Springboot学习日记(三)自动装配

红框部分设置Profile,他就会去扫描service包下,带有java8注解的Service进行装配。

Springboot学习日记(三)自动装配

按照视频中的敲会出现这个错误:这是因为添加了数据库组件,所以autoconfig会去读取数据源配置,而新建的项目还没有配置数据源,所以会导致异常出现。

解决方法:去掉数据库依赖。

Springboot学习日记(三)自动装配

@Condition 编程方式进行装配:

Springboot学习日记(三)自动装配

新建一个类,红色的metadata是从ConditionOnSystemProperty里面拿他的属性。

获取传进来的user.name 还有值,进行比较。

Springboot学习日记(三)自动装配

@Conditional :通过@Conditional注解可以根据代码中设置的条件装载不同的bean,在设置条件注解之前,先要把装载的bean类去实现Condition接口,然后对该实现接口的类设置是否装载的条件

Springboot学习日记(三)自动装配

这里传进去user.name还有value,是我本机的名字。

然后到 ConditionalOnSystemProperty注解类,注解类再通过@Condition跳到OnSystemPropertyCondition,里面进行判断,传进来的value和本机的user.name进行比较,相等返回true。

Springboot学习日记(三)自动装配

这个bean就能被获取到,运行 成功。

Springboot学习日记(三)自动装配

原文 

https://juejin.im/post/5c07222ff265da61223a1eda

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Springboot学习日记(三)自动装配

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址