2016-09-21 3 views
-1

У меня есть класс config, который создает компоненты для моего приложения. Я вижу, что, хотя я устанавливаю свойства bean при создании компонента-адаптера, каким-то образом эти свойства очищаются и устанавливаются в null в моем классе контроллера. После 2 часов отладки я рисую пробел. Любые указатели, пожалуйста.Почему мой Autowired bean имеет нулевые свойства

@RequiredArgsConstructor//lombok annotation to generate the constructor. 
public class MyAdapter {//Trying to create a bean of this type 

    @NonNull private final MyPropertyObj prop; 
    @NonNull private final Integer timeout; 
} 

@Configuration 
@Profile("!test") 
class MyConfigClass{ 

    @Bean 
    public MyAdapter adapter(){ 
    MyPropertyObj prop= new MyPropertyObj(); 
    return new MyAdapter(prop, 10);//Here I am setting prop and 10, but when I check auto wired adapter they are null. 
    } 

} 

public class MyController { 

    @Autowired private MyAdapter adapter; 
//adapter gets injected, but adapter.prop and the adapter.timeout are null. 
} 
+0

вы пробовали http://stackoverflow.com/questions/19896870/why-is-my-spring-autowired-field -null – Augustas

+0

Где находится конструктор в вашем классе 'myAdapter'? – Jens

+0

@ Аугустас Я посмотрел на этот вопрос. Этот вопрос говорит о создании нового объекта вручную и ожидает, что свойство внутри него будет автоматически подключено. То, что я пытаюсь сделать, отличается. Мой компонент, созданный во время создания экземпляра, как-то меняет состояние и очищает его атрибуты. – learningtocode

ответ

0

Вы должны аннотировать контроллер с

@Controller 

аннотацию

+0

Привет, Jana, Спасибо, что ответили, но мой контроллер также является компонентом, который я создаю вместе с компонентом-адаптером. Я вижу, что другие свойства в контроллере установлены нормально. – learningtocode

+0

Возможно, это что-то связано с @Profile («! Test»), тогда вы пробовали его без аннотации? – Janar

Смежные вопросы