先看下面两段代码:
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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。