spring boot 單例bean中使用多例bean

ServiceA

@Component
@Scope("prototype")
public class ServiceA {
}
ServiceB 
@Service
public class ServiceB implements ApplicationContextAware {
    public void say(){
        ServiceA serviceA = this.getServiceA();
        System.out.println("this:"+this+",serviceA:"+ serviceA);
    }
    public ServiceA getServiceA() {
        return this.context.getBean(ServiceA.class);
    }
    private ApplicationContext context;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.context = applicationContext;
    }
}

測試:

@SpringBootApplication
public class SpringBootRedisClientExampleApplication {

    public static void main(String[] args) {
        ApplicationContext run = SpringApplication.run(SpringBootRedisClientExampleApplication.class, args);
        System.out.println();
        ServiceB serviceB = run.getBean(ServiceB.class);
        serviceB.say();
        serviceB.say();
    }
}

結果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章