当大多数开发人员想到控制反转(也称为Dependency Injection,从现在起被称为Dependency Injection)时,就会想到Spring框架。
Micronaut的灵感来自Spring,实际上,Micronaut的核心开发人员是以前为OCI工作的SpringSource / Pivotal工程师。
与Spring完全依赖于运行时反射和代理不同,Micronaut使用编译时数据来实现依赖注入。
Google的Dagger之类的工具也采用了类似的方法,该工具的设计首先考虑了Android。另一方面,Micronaut是为构建服务器端微服务而设计的,它提供了许多与Spring相同的工具和实用程序,但没有使用反射或缓存过多的反射元数据。
上述引用自Micronaut官网。
Micronaut Bean
Bean是一种对象,其生命周期由Micronaut IoC容器控制。该生命周期可能包括创建,执行和销毁。
public interface Engine {
int getCylinders();
String start();
}
@Singleton
public class V8Engine implements Engine {
public String start() {
return "Starting V8";
}
public int getCylinders() {
return cylinders;
}
public void setCylinders(int cylinders) {
this.cylinders = cylinders;
}
private int cylinders = 8;
}
@Singleton
public class Vehicle {
private final Engine engine;
public Vehicle(Engine engine) {
this.engine = engine;
}
public String start() {
return engine.start();
}
}
测试Bean的获取:
public static void main(String[] args) {
BeanContext context = BeanContext.run();
Vehicle vehicle = context.getBean(Vehicle.class);
System.out.println("Engine==="+vehicle.start());
}
可以使用@Inject注入对象