Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Spring @Autowired


Автор: rds29 1.4.2011, 13:22
Я описываю в файле servlet.xml следующую строчку 
Код
 <bean id="beanValidator" class="springmvc.service.BeanValidator"/>

Если я правильно понимаю, то во время исполнения создается объект этого класса, так?
Каким образом можно обратиться и использовать этот объект?
Пробовал вот таким образом. Но объект validator при этом всегда остается со значением Null/
Код
    
@Autowired
private Validator validator 

Автор: MisterCleric 1.4.2011, 14:02
Привет. А где ты его так используешь?
По-моему если бы ты это сделал в рамках Spring Bean, то получил бы либо instance твоего beanValidator или Exception, что bean с таким типом не определен в SpringContext

Автор: rds29 1.4.2011, 14:08
Использую след. образом:
Код

@Service
public class CarManager {

     @Autowired
    private Validator validator;

//поля, методы

public Car createCar(Car c) {

    Car car = new Car();
    car.setId((long) carList.size() + 1);
    car.setBrand(c.getBrand());
    car.setModel(c.getModel());
    car.setPrice(c.getPrice());

        System.out.println( validator);

    carList.add(car);
        
    return car;
}    
}



Вот и в консоль мне выводит null, и соответственно при вызове метода validate NullPointerException.

Пробовал разные способы как получить объект, но он всегда null, хотя если пишу что-то типо:

Код

    LocalValidatorFactoryBean validatorfactory = new LocalValidatorFactoryBean();
  Validator validator =  validatorfactory.getValidator();

То создается не нул объект validatorfactory , а validator все равно получается null

Автор: Entwickler 16.5.2011, 18:01
Во первых, нужно описывать BEAN в application-config.xml или другом конфигурационном файле твоего приложения...

Во вторых ОН не знает что за бин ты вызываешь:
Код

@Autowired
private Validator validator


продекларировал его как:
Код

<bean id="beanValidator" class="springmvc.service.BeanValidator"/>


используй:
Код

@Qualifier("beanValidator")

аннотацию:
Код

@Autowired
@Qualifier("beanValidator")
private Validator validator


тогда он правильно найдёт beanValidator в spring contexte и привяжет reference к validator

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)