首页 > 其他分享 >自定义start

自定义start

时间:2022-10-02 06:11:05浏览次数:51  
标签:容器 String 自定义 public start atguigu hello

1.新建项目atguigu-hello-spring-boot-starter,在pox.xml中导入自动配置atguigu-hello-spring-boot-starter-autoconfigure项目

    <dependencies>
        <dependency>
            <groupId>com.atguigu</groupId>
            <artifactId>atguigu-hello-spring-boot-starter-autoconfigure</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

 

2.新建项目atguigu-hello-spring-boot-starter-autoconfigure 场景的自动配置

2.1.编写JavaBean

@ConfigurationProperties("atguigu.hello")
public class HelloProperties {

    private String prefix;
    private String suffix;

    public String getPrefix() {
        return prefix;
    }

    public void setPrefix(String prefix) {
        this.prefix = prefix;
    }

    public String getSuffix() {
        return suffix;
    }

    public void setSuffix(String suffix) {
        this.suffix = suffix;
    }
}

2.2编写service

/**
 * 默认不要放在容器中
 */
public class HelloService {

    @Autowired
    HelloProperties helloProperties;

    public String sayHello(String userName){
        return helloProperties.getPrefix() + ":"+userName+"》"+helloProperties.getSuffix();
    }
}

2.3编写自动配置

@Configuration
@EnableConfigurationProperties(HelloProperties.class)  //默认HelloProperties放在容器中
public class HelloServiceAutoConfiguration{

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

}

2.4在resource下创建META-INF目录 然后创建spring.factories文件

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.atguigu.hello.auto.HelloServiceAutoConfiguration//配置类路径

 

3.在自己的项目中使用

 

自定义start中   properties类没有直接加入到容器中,方法类也没有直接加入到容器中,

1.如果properties类直接加入容器中的话,那么方法类上就得加上组件注解,方法类上不加组件注解 无法使用自动注入功能 注解就报错

2.方法类上不加组件注解是因为在配置类里要条件判断,要判断自定义的方法还是场景默认的方法,如果直接加上组件注解 这样的话随着场景的启动就会加入到容器中,在自定义方法的时候 容器中就会存在两个

3.当在使用场景默认方法时,我们直接进行自动注入,就会进入到场景的配置类中,new出方法对象的,将@EnableConfigurationProperties中的配置属性类加入容器,并绑定配置属性类上的@configurationproperties(xxx.properties)

4.配置属性类与配置文件是绑定关系,通过配置文件就可以改变配置属性类中的属性,方法中就能使用,

 

标签:容器,String,自定义,public,start,atguigu,hello
From: https://www.cnblogs.com/dzs894330350/p/16748200.html

相关文章

  • OpenDataV低代码平台增加自定义属性编辑
    上一篇我们讲到了怎么在OpenDataV中添加自己的组件,为了让大家更快的上手我们的平台,这一次针对自定义属性编辑,我们再来加一篇说明。我们先来看一下OpenDataV中的属性编辑功......
  • 参数绑定和自定义参数绑定
    参数绑定当前端页面提交表单,表单数据对应后端实体类,控制层处理请求时,会将表单数据与实体类对象属性自动绑定(即转为对象)#前端:姓名:<inputname="userName"/><br/>年龄:<inp......
  • 自定义全局操作
    ​​官方文档​​​​官方文档​​​​官方案例​​定义sqlpublicclassFindOneextendsAbstractMethod{@OverridepublicMappedStatementinjectMappedStatemen......
  • python框架中自定义封装logging,一文解决
     为什么需要Logger刚开始写代码可能使用print打印输出就够用了,但是print重定向输出内容非常麻烦,而且无法区分打印日志等级。而logging可以设置打印等级,也可以重定向输......
  • vue3 自定义指令控制按钮权限
    经过1个周的摸索和查阅资料,终于搞定VUE3中自定义指令,实现按钮级别的权限控制。当然,只是简单的对按钮进行隐藏和删除的dom操作比较容易,一直纠结的是当按钮无权限时,不是直接......
  • Single Transaction Analysis (ST12) getting started
    货铺QQ群号:834508274heSingleTransactionAnalysiswasdeveloped topromotetheusageofABAPtraceinsideSAPSupport.ItintegratestheABAP-(SE30)andtheP......
  • 0066-Tui-自定义组件
    环境Time2022-08-17Rust1.63.0Tui0.18.0前言说明参考:https://github.com/fdehau/tui-rs/blob/master/examples/custom_widget.rs目标使用tui-rs自定义一个......
  • 解决https://start.spring.io连接不上的问题
    1、问题描述在使用Eclipse或者Idea创建Springboot项目时,需要使用"https://start.spring.io"创建项目,但时不时总是会报"SocketTimeoutException:Connecttimedout"的错误......
  • SpringBoot项目中自定义线程池与异步调用案例
    SpringBoot项目中自定义线程池与异步调用案例一、自定义线程池1、配置文件server:port:9006#线程池配置参数task:pool:corePoolSize:10#设置核心线程......
  • Delphi XE MessageDialog- 显示包含自定义消息、对话框类型、按钮集和帮助上下文ID的
    DelphiXEMessageDialog-显示包含自定义消息、对话框类型、按钮集和帮助上下文ID的对话框。-可以同步或异步工作classprocedureMessageDialog(constAMessage:......