У меня есть класс, как показано ниже:автоматического связывания проблема с SpringBoot
package com.company.data.render.model
@RestController
public class ControllerClass {
@Autowired
ApplicationPropertiesServiceImpl services;
@RequestMapping(value = "/node1", method = RequestMethod.GET)
@ResponseBody
public ParentNode getNode1()
{
Child node = new Child();
List<Map<String, Object>> properties properties = services.getData("A",xxx);
node.addtree();
node.setProperties(properties);
return node;
}
} -------------------------------------------------------------------------------
package com.company.data.service;
@Component
public List<Map<String, Object>> getData(String type,String name)
{
if(type.equalsIgnoreCase("A"))
{
String sql = "select * from data.data_properties(?)";
List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql,host);
return rows;
}else if(properties.equalsIgnoreCase("B"))
{
String sql = "select * from data.application_properties(?)";
List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql,host);
return rows;
}
}
-------------------------------------------------------------------------------
package com.company.data.render.model;
@Component
public class Child {
@Autowired
ApplicationPropertiesServiceImpl services;
public void addtree()
{
List<Map<String, Object>> properties=services.getData("B", "xxy");
}
}
Как я могу получить доступ к GetData() функция в ребенка class.I подводят исключение нулевого указателя для службы объекта, хотя Я autowired в ApplicationPropertiesServiceImpl
опечатка аннотацию он должен быть '@ Autowired'. Однако это плохая идея подключить контроллер к другому компоненту. Было бы лучше, если бы вы извлекли общий код в отдельный компонент '@ Service' и ссылку на этот компонент из контроллера и вашего класса' Child'. Конечно, вы также должны правильно настроить контекст приложения и инициализировать его. – hotzst
Лучше вы отделите логику, текущий ваш контроллер делает слишком много вещей. Я предлагаю вам сделать 2 класса: службу и DAO (репозиторий). Репозиторий даст вам результат db. И сервис будет иметь объект DAO + некоторый бизнес. Оба контроллера будут обслуживаться автоматически. – korogui
@korogue --evenif я создаю отдельный класс. Как я получу один и тот же объект службы в обоих классах? – Aman