• 自定义自动配置


    所谓自动配置,就是没有显示声明扫描或者配置一个Bean,但是当某些条件触发后,这些Bean就会被纳入Spring管理,并且能够对这些Bean进行一些初始化配置(主要通过配置文件)

    需求:只要存在HelloService,就自动配置这个Bean

    pom

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wisely</groupId>
    <artifactId>spring-boot-starter-hello</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring-boot-starter-hello</name>
    <url>http://maven.apache.org</url>

    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
    <version>1.5.1.RELEASE</version>
    </dependency>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
    </dependency>
    </dependencies>
    </project>




    自动配置类

    package com.wisely;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

    /**
    * Created by sherry on 17/2/16.
    */
    @Configuration
    @ConditionalOnClass(HelloService.class)
    @ConditionalOnProperty(prefix = "hello",value = "enabled",matchIfMissing = true)
    public class HelloServiceAutoConfiguration {

    @Autowired
    private HelloServiceYml helloServiceYml;

    @Bean
    @ConditionalOnMissingBean(HelloService.class)
    public HelloService helloService(){
    HelloService helloService = new HelloService();
    helloService.setMsg(helloServiceYml.getMsg());
    return helloService;
    }

    }


    将这个jar发布后,只要引入这个jar,并且项目中存在HelloService类,不需要配置,就会被Spring管理
  • 相关阅读:
    JAVA正则表达式matcher.find()和 matcher.matches()的区别
    Mysql面试题
    Mysql常见的错误码
    关于Spring的69个问题
    Exception总结
    JDK5-8特性归纳
    TCP和UDP的区别
    log4j介绍和使用
    tomcat项目中配置数据库连接池
    Mybatis简介、环境搭建和详解
  • 原文地址:https://www.cnblogs.com/sherrykid/p/6419458.html
Copyright © 2020-2023  润新知