自動裝配的問題,我有一個類象下面這樣:與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我得到空指針異常的服務對象雖然我已經自動裝配的ApplicationPropertiesServiceImpl
錯誤拼寫應該是'@ Autowired'註釋。但是,將控制器連接到另一個組件是個不錯的主意。如果你將公共代碼提取到一個單獨的'@Service' bean中,並從控制器和''Child'類引用這個bean,那將會更好。當然,您還必須正確設置應用程序上下文並對其進行初始化。 – hotzst
你最好分開邏輯,目前你的控制器做的東西太多了。我建議你做2個類:一個服務和一個DAO(倉庫)。存儲庫會給你數據庫的結果。該服務將具有DAO對象+一些業務。兩個控制器都將具有自動裝配的服務。 – korogui
@korogue --evenif我創建了一個單獨的類..我將如何在類中獲得相同的服務對象? – Aman