我使用的是Java 8,我还有下一个枚举。问题是,是否可能将一个注入变量分配给一个注入变量,另一个注入变量的值在一个类中,就像在下一行中一样?
public enum CommandEnum {
EMPTY_COMMAND {
{
this.command = emptyCommand;
}
},
NAME_GENERATION {
{
this.command = nameGenerationCommand;
}
},
NAME_GENERATION_SETTINGS {
{
this.command = nameGenerationSettingsCommand;
}
},
SIGNIN {
{
this.command = signinCommand; // is it possible?
}
};
@Inject
@EmptyCommandQualifier
Command command;
@Inject
EmptyCommand emptyCommand;
@Inject
NameGenerationCommand nameGenerationCommand;
@Inject
NameGenerationSettingsCommand nameGenerationSettingsCommand;
@Inject
SigninCommand signinCommand;
public Command getCommand() {
return command;
}
}谢谢。
发布于 2021-04-04 14:03:08
是的,这是可能的,但只有在CDI有机会注入一个价值之后。CDI supports @PostConstruct annotation for this purpose
使用
@PostConstruct注释初始化托管Bean指定生命周期回调方法,CDI框架应该在依赖注入之后,但在类投入服务之前调用该方法。
在托管bean类或其任何超类中,定义一个执行初始化的方法,即require.
javax.annotation.PostConstruct注释声明该方法。当托管bean被注入到组件中时,CDI在所有注入发生之后和所有初始化器都被调用之后调用该方法。
注意:按照JSR 250中的要求,如果在超类中声明带注释的方法,则除非声明类的子类覆盖该方法,否则将调用该方法。
添加下面的方法将产生您想要的效果:
@PostConstruct
public void init () {
this.command = signinCommand;
}https://stackoverflow.com/questions/66722202
复制相似问题