Ratpack:构建简单高效的 HTTP 微服务(3)Spring 集成
- UID
- 1066743
|
Ratpack:构建简单高效的 HTTP 微服务(3)Spring 集成
Spring 集成Ratpack 提供了与 Spring 框架的集成。集成的方式有两种。第一种是在 Ratpack 应用中使用 Spring 框架提供的依赖注入功能。之前介绍过 Ratpack 中的 Registry 接口提供了对象的注册和查找功能。这个功能可以用 Spring 来替代,也就是由 Spring 来负责 Registry 中对象的创建和管理。这样就可以充分利用 Spring 强大的依赖注入功能来简化 Ratpack 应用的开发。
在 中,Greeting 是一个作为示例的接口。AppConfiguration 是 Spring 框架使用的配置类,在其中定义了一个 Greeting 接口的实现对象。在启动 Ratpack 服务器时,通过 registry 方法来指定一个 Registry 接口的实现,而 ratpack.spring.Spring.spring 方法则把一个 Spring 的配置类转换成 Registry 对象。这样在处理器的实现中就可以从 Context 中查找到 Greeting 接口的实现对象并使用。
清单 7. 在 Ratpack 中使用 Spring 的依赖注入功能1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| RatpackServer.start(server -> server
.registry(spring(AppConfiguration.class))
.handlers(chain -> chain
.get(ctx -> ctx
.render(ctx.get(Greeting.class).say("Alex")))
)
);
public interface Greeting {
String say(final String name);
}
@Configuration
class AppConfiguration {
@Bean
public Greeting greeting() {
return name -> String.format("Hello, %s", name);
}
}
|
另外一种与 Spring 集成的方式是在 Spring Boot 中把 Ratpack 作为 Servlet 容器的替代。在 中,在 Spring Boot 启动类中添加注解 @EnableRatpack 来启用 Ratpack。Ratpack 中处理器的逻辑定义在 Action<Chain>类型的对象中。这与代码清单中启动 Ratpack 服务器时使用的 handlers 方法的作用是相同的。
清单 8. 在 Spring Boot 中使用 Ratpack1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| @SpringBootApplication
@EnableRatpack
public class SpringBootApp {
@Bean
public Action<Chain> index() {
return chain -> chain
.get(ctx -> ctx
.render(greeting().say("Alex"))
);
}
public Greeting greeting() {
return name -> String.format("Hello, %s", name);
}
public static void main(String... args) throws Exception {
SpringApplication.run(SpringBootApp.class, args);
}
}
|
|
|
|
|
|
|