Solon v2.7.5

四、注入示意图

</> markdown

1、配置注入

配置的注入:要么注入,要么忽略,要么异常。这个过程是同步的。

@Component
public class DemoCom{
    @Inject("${user.name}") //注入配置
    String userName;
}

2、Bean 注入

因为扫描的顺序关系是不可预期的,在做 Bean 字段的注入处理时,目标可能“已”存在、也可能“未”存在。当未存在时,框架会进行订阅处理,“等到”目标 Bean 注册时会进行通知回调并注入。所以,这个过程可能是同步的,也可能是异步的(也可能就没有)。

@Component
public class DemoCom{
    @Inject("${user.name}")
    String userName;
    
    @Inject
    UserService userService; //注入Bean
}

图中的 Bean2 有2个特点,需要注意:

  • 有可能永远不会产生(比如用户没写)
  • 在注册时,有些字段也可能在订阅中(注册,不会等待所有字段注入完成)

3、Bean 生命周期回顾

@Component
public class DemoCom implements LifecycleBean{
    @Inject("${user.name}")
    String userName;
    
    @Inject
    UserService userService; //注入Bean
    
    public DemoCom(){
       //构建函数时,注入是不能用的
    }
    
    @Override
    public void start(){
        //所有 bean 都构建完成了(包括所有注入)//可以做些像数据初始化之类的活
    }
    
    @Override
    public void stop(){
        //一般做些释放或停止类的工作
    }
}