Micronaut 中是否有 Springs Resource 的等效项?
Is there an equivalent for Springs Resource in Micronaut?
我正在将一个微型 Spring 引导应用程序迁移到 Micronaut 1.0.1,我想知道是否有 org.springframework.core.io.Resource
的等效项及其实现,例如 ClasspathResource
?
在 Spring 引导中,我使用其构造函数将资源注入到服务中。
@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; }
}
在 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");
我用了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
ResourceLoader
works well but you can do better. In Micronaut you can use io.micronaut.core.io.Readable
. It is roughly equivalent to Spring's Resource
. You can also use Readable
in ConfigurationProperties 从而将您的配置 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"
我创建了:
你可以这样做
@Singleton
public class MyService {
@Value("classpath:your-file.json")
private Readable readable;
}
或
@Singleton
public class MyService {
private final Readable readable;
public MyService(@Value("classpath:your-file.json") Readable file) {
this.readable = readable;
}
}
我正在将一个微型 Spring 引导应用程序迁移到 Micronaut 1.0.1,我想知道是否有 org.springframework.core.io.Resource
的等效项及其实现,例如 ClasspathResource
?
在 Spring 引导中,我使用其构造函数将资源注入到服务中。
@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; }
}
在 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");
我用了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
ResourceLoader
works well but you can do better. In Micronaut you can use io.micronaut.core.io.Readable
. It is roughly equivalent to Spring's Resource
. You can also use Readable
in ConfigurationProperties 从而将您的配置 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"
我创建了:
你可以这样做
@Singleton
public class MyService {
@Value("classpath:your-file.json")
private Readable readable;
}
或
@Singleton
public class MyService {
private final Readable readable;
public MyService(@Value("classpath:your-file.json") Readable file) {
this.readable = readable;
}
}