Доступ к бину в Java Spring

Рейтинг: 1Ответов: 1Опубликовано: 31.10.2014

Помогите, пожалуйста, разобраться или подскажите, где почитать...

В container из бина Main загружен component ServiceA. Но кроме как в конструкторе serviceA не "виден"... Для доступа приходится "просить" его через container.getBean("serviceA").

Как обратиться к ServiceA через "." (serviceA.hashCode());?

Cейчас бросает NullPointerException...

    public class Main {

    private static BeanFactory beanFactory = new ClassPathXmlApplicationContext("config.xml");

    @Autowired
    private ServiceA serviceA;

    public void hello() {
        serviceA.hashCode();
    }

    public static void main(String[] args) {
        Main main = new Main();
        main.hello();
    }

}

@Service
public class ServiceA {

}

Ответы

▲ 2

Суть в том, что вы создаете объект Main через new. Это противоречит схеме Dependency Injection. В данном случае правильно объявить Main бином, получить main как бин. То есть:

public static void main(String[] args) {
    Main main = beanFactory.getBean(Main.class);
    main.hello();
}

вот так вот должно быть всё хорошо, если вы объявите Main как бин в xml файле.