美文网首页
4-@Configuration注解深入详解

4-@Configuration注解深入详解

作者: 小安的大情调 | 来源:发表于2020-06-09 00:04 被阅读0次

我准备战斗到最后,不是因为我勇敢,是我想见证一切。 --双雪涛《猎人》

[TOC]

Thinking

  1. 一个技术,为什么要用它,解决了那些问题?
  2. 如果不用会怎么样,有没有其它的解决方法?
  3. 对比其它的解决方案,为什么最终选择了这种,都有何利弊?
  4. 你觉得项目中还有那些地方可以用到,如果用了会带来那些问题?
  5. 这些问题你又如何去解决的呢?

声明:本文基于springboot 2.1.3 2.1.3.RELEASE

该注解是用于进行配置的,就是标识某一个类是一个配置类的注解。该注解是spring提供的。位于spring.context包下。

1、基于doc文档的解读

image-20200605230430059

该注解用于类上,并且搭配@Bean注解使该注解标识的方法变成由spring容器管理的Bean对象。每个方法上都会加上这样的一个Bean的注解,方法本身会返回一个对象。

根据class类进行属性的注册。

image-20200605234410082

另一种注册Bean的方式,为xml的方式。

image-20200606225234968

​ 其中<context:annotation-config> 是用于激活那些已经在spring容器里注册过的bean(无论是通过xml的方式还是通过package sanning的方式)上面的注解。

值得注意的是<context:component-scan/>不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,同时还启用了注释驱动自动注入的功能(即还隐式地在内部注册了 AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor),因此当使用 <context:component-scan/> 后,就可以将 <context:annotation-config/> 移除了。

根据注解进行扫描

image-20200606232214849

springboot 所以一般启动类都是在最外层的中,以保证默认情况下可以扫描到该类下的所有Bean,在SpringBoot的所有的组件中都会定义在主类的子包下。

加载外部的属性

image-20200608230650032

在上面的doc中看出,在家在外部配置时,可以使用@PropertySource加载自定义的配置。可以指定一个或者多个。

使用@value注解 注入 配置文件中的信息

image-20200608231439273

使用@Import组合多个配置类

image-20200608231800406

这里的注入是可以使用@Import 组合多个配置类

使用@Profile给配置类进行区分

image-20200608232245718

用于区分在同一个Bean 对象名中,具体的注入对象。

相当于在开发环境或者在测试环境中需要使用不同的数据库,所以这种只需要使用该注解就可以实现 一件转换了。

配合@ImportResource导入xml文件中的配置

image-20200608232609579

使用嵌套的@Configuration

image-20200608232724863

这样在使用AppConfig 时,就已经隐式的将DatabaseConfig注入到该Bean中了,避免了显示的使用@Import注解了。

使用懒加载 的配置类

image-20200608233141913

默认情况下,Bean 是随容器启动时,一并创建好的,但是存在懒加载的需求是,可以使用@Lazy将配置类设置为懒加载。

该注解也适用于所有的Bean类

image-20200608233403421

测试类也是支持配置上下文的

image-20200608233457907

其他

image-20200608233731715

可以配置开启spring内置的各种功能。

2、成员变量

别名

image-20200608235515901

默认情况下,如果在缺醒状态下,是使用bean的类名作为名称。

image-20200608235914052

使用该注解的类,默认情况下是会使用cglib将所有的bean 动态生成。

如果设置成false,则配置类就是一个普通的工厂类。


本文仅供笔者本人学习,有错误的地方还望指出,一起进步!望海涵!

转载请注明出处!

欢迎关注我的公共号,无广告,不打扰。不定时更新Java后端知识,我们一起超神。


qrcode.jpg

——努力努力再努力xLg

加油!

相关文章

  • 4-@Configuration注解深入详解

    我准备战斗到最后,不是因为我勇敢,是我想见证一切。 --双雪涛《猎人》 [TOC] Thinking 一个技...

  • Java注解

    Java注解(Annotation)详解(一)——概述及JDK自带注解 Java注解(Annotation)详解(...

  • Spring Boot 注解大全

    一、注解 (annotations) 列表 二、注解 (annotations) 详解@SpringBootApp...

  • Android 编译时注解 —— 语法详解

    java Type 详解 java 反射机制详解 注解使用入门(一) Android 自定义编译时注解1 - 简单...

  • Springboot 注解详解

    ================以下内容来自转载================ 使用注解的优势: 一、注解详解 ...

  • 详解Java注解( Annotation )

    详解Java注解( Annotation ) 注解的定义: 注解(Annotation),也叫元数据。一种代码级别...

  • 解读注解使用

    一、注解:深入理解JAVA注解 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们...

  • 详解jackson注解(一)jackson系列化注解

    详解jackson注解(一)jackson系列化注解 jackson中用于系列化的主要注解有: 注解描述1@Jso...

  • TestNG

    注解 执行顺序 testng.xml tag详解

  • 25.Kotlin注解详解

    Kotlin注解详解 注解声明注解是将元数据附加到代码的方法。要声明注解,请将 annotation 修饰符放在类...

网友评论

      本文标题:4-@Configuration注解深入详解

      本文链接:https://www.haomeiwen.com/subject/dadjtktx.html