Пружинная зависимая система впрыска топлива Null
Я смог использовать RestTemplate и автоматически подключить его. Однако я хочу переместить часть кода, связанную с моим шаблоном отдыха, в другой класс следующим образом:
public class Bridge {
private final String BASE_URL = "http://localhost:8080/u";
@Autowired
RestTemplate restTemplate;
public void addW() {
Map<String, String> x = new HashMap<String, String>();
W c = restTemplate.getForObject(BASE_URL + "/device/yeni", W.class, x);
System.out.println("Here!");
}
}
И в другом классе я называю это:
...
Bridge wb = new Bridge();
wb.addW();
...
Я новичок в терминах Spring и Dependency Injection. мой restTemplate
переменная равна нулю и выдает исключение. Что я могу сделать, как решить (не знаю, связано ли это с new
ключевое слово)?
3 ответа
С помощью Bridge wb = new Bridge()
не работает с внедрением зависимости. Ваш restTemplate
не вводится, потому что wb
Весной не удалось.
Вы должны сделать свой Bridge
сам Spring bean, например, с помощью аннотации:
@Service
public class Bridge {
// ...
}
или объявлением бина:
<bean id="bridge" class="Bridge"/>
Просто чтобы добавить к правильному ответу Джеха.
В настоящее время, делая
Bridge wb = new Bridge();
Означает, что этот экземпляр объекта не "Spring Managed" - то есть Spring ничего не знает об этом. Так как же он может внедрить зависимость, о которой он ничего не знает?
Так как Джеха сказал. Добавьте аннотацию @Service или укажите ее в конфигурационном файле xml контекста приложения (или, если вы используете Spring 3, вы @ объект конфигурации)
Затем, когда запускается контекст Spring, в BeanFactory будет экземпляр Singleton (поведение по умолчанию) класса Bridge.class. Либо добавьте это в другие объекты Spring-Managed, либо вытащите его вручную, например
Bridge wb = (Bridge) applicationContext.getBean("bridge"); // Name comes from the default of the class
Теперь он будет иметь зависимые соединения.
Если вы хотите использовать оператор new и все еще вводить все зависимости, то вместо того, чтобы сделать это пружинным компонентом (с помощью аннотации @Service), сделайте его классом @Configurable.
Таким образом, даже объект будет создан новыми операторными зависимостями.
Немного конфигурации также требуется. Подробное объяснение и пример проекта здесь.
http://spring-framework-interoperability.blogspot.in/2012/07/spring-managed-components.html