程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

SpringBoot配置类和@Configuration注解

发布于2021-05-29 20:02     阅读(809)     评论(0)     点赞(5)     收藏(1)


1.配置类和配置组件(@Configuration + @Bean)

@Configuration声明配置类

/**
 * 告诉spring boot这是一个配置类;
 * 配置类本身也是一个组件;
 * 组件默认是单实例的;
 *
 * proxyBeanMethods:
 *      默认是true
 *      true--- full
 *      false--- lite
 *      解决组件依赖问题;
 *          配置类中组件不存在依赖关系,推荐使用 proxyBeanMethods=false;
 *          配置类中组件存在依赖关系,推荐使用proxyBeanMethods=true;
 */

@Bean声明配置组件

/**
	 * 给spring容器添加组件,
	 * 方法名就是组件ID;
	 * 返回类型是组件类型;
	 * 返回值是组件在容器中的实例;
	 */
  • 配置类
package com.dh.config;

import com.dh.bean.Pet;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 告诉spring boot这是一个配置类;
 * 配置类本身也是一个组件;
 * 组件默认是单实例的;
 *
 * proxyBeanMethods:
 *      默认是true
 *      true--- full
 *      false--- lite
 *      解决组件依赖问题;
 *          配置类中组件不存在依赖关系,推荐使用 proxyBeanMethods=false;
 *          配置类中组件存在依赖关系,推荐使用proxyBeanMethods=true;
 */

@Configuration(proxyBeanMethods = true)
public class MyConfig {

    /**
     * 给spring容器添加组件,
     * 方法名就是组件ID;
     * 返回类型是组件类型;
     * 返回值是组件在容器中的实例;
     */
    @Bean
    public Pet pet01(){
        return new Pet("001","tom","2");
    }

}

  • 实体Bean Pet
package com.dh.bean;


public class Pet {
    private String id;
    private String name;
    private String age;

    public Pet(){}

    public Pet(String id,String name,String age){
        this.id=id;
        this.name=name;
        this.age=age;
    }

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getAge() {
        return age;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(String age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Pet{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}

2. @Import({类名1.class,类名2.class,…类名n.class})

  • 为容器创建组件,
  • 通过无参构造器创建组件实例
  • 获取的是全类名的组件实例 如: com.lchh.bean.Pet

3. 条件装配 @Conditional

  • 条件装配,满足条件才会进行组件注入装配
    在这里插入图片描述

@ConditionalOnBean 当容器存在指定的bean时

@ConditionalOnMissingBean 当容器中不存在指定的bean时

@ConditionalOnClass 当容器中存在某个class的时候

@ConditionalOnMissingClass 当容器中不存在某个class的时候

@ConditionalOnResource 当项目类路径中存在某个资源

@ConditionalOnJava 当项目的Java是某个版本的时候

@ConditionalOnWebApplication 当项目是一个web项目的时候

@ConditionalOnNotWebApplication 当项目不是一个web项目的时候



所属网站分类: 技术文章 > 博客

作者:黑暗之神

链接:http://www.javaheidong.com/blog/article/207334/ded954953eea9924660d/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

5 0
收藏该文
已收藏

评论内容:(最多支持255个字符)