ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

spring 中把接口作为参数调用

2022-06-16 02:32:16  阅读:145  来源: 互联网

标签:function web 调用 spring springframework reactive 接口 import org


先看下面两段代码:

package com.example.webflux.handler;

import com.example.webflux.pojo.Greeting;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Mono;

@Component
public class GreetingHandler {

    public Mono<ServerResponse> hello(ServerRequest request) {
        return ServerResponse.ok()
                .contentType(MediaType.APPLICATION_JSON)
                .body(BodyInserters.fromValue(new Greeting("Hello Spring")));
    }
}
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.RouterFunctions;
import org.springframework.web.reactive.function.server.ServerResponse;

import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
import static org.springframework.web.reactive.function.server.RequestPredicates.accept;

@Configuration(proxyBeanMethods = false)
@Import(TestRouter.class)
public class GreetingRouter {
    @Bean
    public RouterFunction<ServerResponse> route(GreetingHandler greetingHandler){
        return RouterFunctions.route(GET("/hello")
                .and(accept(MediaType.APPLICATION_JSON)),
                greetingHandler::hello
                );

    }
}

我一直想不明白为什么在route方法中传入一个接口类型的形参,就能调用相应的方法?后来听了黑马李老师的视屏后才明白原因

  • GreetingHandler类因为标注了注解Component,所以在程序起动时会自动会向sprring容器中注入bean对象
  • route方法上标注@Bean表示把返回对象注入到spring容器中,如果当方法中有形参时,就会默认进行自动装配注入

感谢李老师
视屏地址:https://www.toutiao.com/video/7088620870285034020/



来自为知笔记(Wiz)

标签:function,web,调用,spring,springframework,reactive,接口,import,org
来源: https://www.cnblogs.com/baiyifengyun/p/16380542.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有