Solon v3.0.3

E、关于单例与原型 @Singleton

</> markdown

Solon 容器托管的对象,默认是单例的。也可以是原型的(即多例。每次获取或注入,会新构造实例)。

1、构建单例托管对象

  • @Component 组件注解(默认是单例)
@Component
public class DemoService{ }
  • @Bean 注解(只有单例)
@Configuration
public class DemoConfig {
   @Bean
   public DataSource db1(@Inject("${demo.db1}") HikariDataSource ds){
       return ds;
   }
}
  • 手动构建
Solon.context().wrapAndPut(DemoService.class);
//或
//Solon.context().wrapAndPut(DemoService.class, new DemoService());

2、构建原型(非单例)托管对象

Solon 的原型是实例级的,即每次获取或注入会构建新实例。(方法调用时,不会构建新实例)

  • @Component 组件注解(添加非单例注解申明)
@Singleton(false)
@Component
public class DemoService{ }
  • 手动构建
BeanWrap bw = Solon.context().wrap(DemoService.class);
bw.singletonSet(false);

Solon.context().putWrap(DemoService.class, bw)

3、只支持“单例”的几个内部接口

接口说明
LifecycleBean生命周期 Bean
EventListener内部事件监听器
LoadBalance.Factory负载均衡工厂
Render沉染器
Filter过滤器
RouterInterceptor路由拦截器
ActionReturnHandlerMVC 动作返回处理器
ActionExecuteHandlerMVC 动作执行处理器
Converter类型转换器
ConverterFactory类型转换器工厂