zoukankan      html  css  js  c++  java
  • springboot中@Configuration的用法

    一、背景
    在spring框架中,会有大量 的xml配置文件,或者需要做很多繁琐的配置。

    从spring3开始,spring就支持了两种bean的配置方式, 一种是基于xml文件方式、另一种就是JavaConfig 。

    springboot 框架是为了能够帮助使用 spring 框架的开发者快速高效的构建一个基于 spirng 框架以及 spring 生态 体系的应用解决方案。它是对约定优于配置这个理念下 的一个最佳实践。因此它是一个服务于框架的框架,服务的范围是简化配置文件。

    约定优于配置的体现

    maven的目录结构

    默认有resources文件夹存放配置文件
    默认打包方式为jar
    spring-boot-starter-web 中默认包含 spring mvc 相关依赖以及内置的tomcat容器,使得构建一个web应用 更加简单

    默认提供application.properties/yml文件

    默认通过 spring.profiles.active 属性来决定运行环境时读取的配置文件

    EnableAutoConfiguration 默认对于依赖的starter进行自动装载

    Spring4 以后,官方推荐我们使用Java Config来代替applicationContext.xml,声明将Bean交给容器管理。

    在Spring Boot中,Java Config的使用也已完全替代了applicationContext.xml。实现了xml的零配置。在实现JavaConfig配置的时候就需要使用@Configuration和@Bean注解。

    二、注解@Configure的作用
    @Configuration的作用:标注在类上,配置spring容器(应用上下文)。相当于把该类作为spring的xml配置文件中的<beans>。@Configuration注解的类中,使用@Bean注解标注的方法,返回的类型都会直接注册为bean。

    @Configure注解的定义如下:

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    public @interface Configuration {
    String value() default "";
    }

    从定义来看,底层是含有@Component ,所以@Configuration 具有和 @Component 的作用。因此context:component-scan/或者@ComponentScan都能处理@Configuration注解的类。

    从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

    注意:@Configuration注解的配置类有如下要求:

    三、JavaConfig和xml的异同
    传统意义上的 spring 应用都是基于 xml 形式来配置 bean 的依赖关系。然后通过spring容器在启动的时候,把bean进行初始化并且,如果bean之间存在依赖关系,则分析这些已经在IoC容器中的bean根据依赖关系进行组装。 Java5 引入了 Annotations 这个特性,Spring 框架也紧随大流并且推出了基于 Java 代码和Annotation元信息的依赖关系绑定描述的方式,也就是JavaConfig。

    任何一个标注了@Configuration 的 Java 类定义都是一个 JavaConfig 配置类。而在这个配置类中,任何标注了 @Bean 的方法,它的返回值都会作为 Bean 定义注册到 Spring的IOC容器,方法名默认成为这个bean的id。和之前XML配置的作用是一样的。

    具体的相同之处:
    1、@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的,作用为:配置spring容器(应用上下文)
    2、@Bean标注在方法上(返回某个实例的方法),等价于spring的xml配置文件中的,作用为:注册bean对象

    1、表达形式层面
    @Configuration标注在类上,相当于把该类作为spring的xml配置文件中的,作用为:配置spring容器(应用上下文)

    基于XML配置的方式是这样:

     

     

    如果一个bean的定义依赖其他bean,则直接调用对应的JavaConfig类中依赖bean的创建方法就可以了。

    四、两种方法配置Mybatis

    博文中,展示了分别用JavaConfig和xml配置mybatis的代码。可以很容易看出JavaConfig和xml的区别。

     

     

     具体使用:

     

  • 相关阅读:
    Android模拟器安装程序及上传音乐并播放
    Android .classpath文件的作用
    eclipse常用快捷键
    使用Eclipse开发Android源码
    android模拟器环境选择媒体文件,解决"No media found"
    Android模拟器使用SD卡
    string.xml文件需要转译字符”’”
    播放器设计方案
    PHP文件系统文件上传
    PHP文件系统文件下载
  • 原文地址:https://www.cnblogs.com/dingjiaoyang/p/15513425.html
Copyright © 2011-2022 走看看