Micronaut 中的 Springs 资源是不是有等价物?
Posted
技术标签:
【中文标题】Micronaut 中的 Springs 资源是不是有等价物?【英文标题】:Is there an equivalent for Springs Resource in Micronaut?Micronaut 中的 Springs 资源是否有等价物? 【发布时间】:2019-04-21 13:08:16 【问题描述】:我正在将一个小型 Spring Boot 应用程序迁移到 Micronaut 1.0.1,我想知道是否有 org.springframework.core.io.Resource
的等效项及其实现,例如 ClasspathResource
?
在 Spring Boot 中,我使用其构造函数将资源注入服务。
@Service
public class MyService()
private final Resource resource;
public MyService(Resource resource) this.resource = resource;
如何在 Micronaut 中做到这一点?
@Singleton
public class MyService()
private final Resource resource;
@Inject
public MyService(Resource resource) this.resource = resource;
【问题讨论】:
【参考方案1】:在 Micronaut 中,您可以使用 io.micronaut.core.io.ResourceLoader
变体,例如 io.micronaut.core.io.scan.ClassPathResourceLoader
或 io.micronaut.core.io.file.FileSystemResourceLoader
。获得它们的一种方法是通过io.micronaut.core.io.ResourceResolver
:
ClassPathResourceLoader loader = new ResourceResolver().getLoader(ClassPathResourceLoader.class).get();
Optional<URL> resource = loader.getResource("classpath:foo/bar.txt");
【讨论】:
【参考方案2】:我使用了io.micronaut.core.io.ResourceLoader
。通过构造函数连接:
@Controller("root")
public class MyController
private final ResourceLoader loader;
public MyController(ResourceLoader loader)
this.loader = loader;
@Get("/index")
@Produces(MediaType.TEXT_html)
public String greet() throws IOException
return new String(loader.getResourceAsStream("index.html").get().readAllBytes());
我的index.html
的路径:src/main/resources/index.html
【讨论】:
【参考方案3】:ResourceLoader
效果很好,但你可以做得更好。在 Micronaut 中,您可以使用 io.micronaut.core.io.Readable
。大致相当于Spring的Resource
。您还可以在ConfigurationProperties 中使用Readable
,从而将您的配置yaml/properties 直接绑定到Readable
属性:
micronaut:
application:
name: Demo
images:
image-file: "classpath:images/bismarckia-nobilis.jpg"
# image-file: "file:/path/to/images/bismarckia-nobilis.jpg"
other-files:
- "classpath:images/bismarckia-nobilis.jpg"
- "classpath:images/bamboo.jpg"
- "classpath:images/hibiscus.jpg"
我已经创建了:
博文:https://hillert.com/blog/from-resource-to-readable/ 演示:https://github.com/ghillert/resource-readable-demo【讨论】:
以上是关于Micronaut 中的 Springs 资源是不是有等价物?的主要内容,如果未能解决你的问题,请参考以下文章