Micronaut中有Springs Resource的等效项吗?

时间:2018-11-19 07:33:39

标签: java micronaut

我正在将一个很小的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; }
}

2 个答案:

答案 0 :(得分:2)

在Micronaut中,可以使用io.micronaut.core.io.ResourceLoader变体,例如io.micronaut.core.io.scan.ClassPathResourceLoaderio.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");

答案 1 :(得分:0)

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"

我创建了: