@ComponentScan({ "com.test" })
public class AppConfiguration {
//@Bean("test-bean")
@Bean
public Definition definition() {
return () -> Test.class;
}
}
@Named
@Scope("prototype")
public class Test extends DefinitionActor<?> {
....
}
在这里,我使用Akka,因此必须使用@Scope(“prototype”)。
出于某种原因,我不想硬编码bean名称来测试bean。
因此,我使用BeanPostProcessor。
@Component
public class BeanDefinitionRegistryPP implements BeanDefinitionRegistryPostProcessor, EnvironmentAware {
private Environment env;
@Override
public void setEnvironment(final Environment environment) {
this.env = environment;
}
@Override
public void postProcessBeanDefinitionRegistry(final BeanDefinitionRegistry registry) throws BeansException {
}
如果我这样做的话,我会犯AKKA错误。
Caused by: akka.actor.ActorInitializationException: You cannot create an instance of [com.test.Test] explicitly using the constructor (new). You have to use one of the 'actorOf' factory methods to create a new actor. See the documentation.
at akka.actor.ActorInitializationException$.apply(Actor.scala:181) ~[akka-actor_2.11-2.4.19.jar:na]