当我从控制器调用服务层时,数据将保存在数据库中。
我的控制器是:
@Service
@Transactional
public class PersonServiceImpl implements PersonService {
@Autowired
PersonDao personDao;
@Override
public void addPerson(Person person) {
personDao.addPerson(person);
}
}
服务层是:
@RestController
@RequestMapping("/api")
public class ApiController {
@Autowired(required = true)
PersonService personService; //This is service layer class
@RequestMapping("/add")
public void add(){
MiddleClass m=new MiddleClass();
m.create();
}
}
直到现在一切正常。
但是当我通过另一个类调用服务层时,会显示空指针异常。 那时候: 我的控制器是:
public class MiddleClass {
@Autowired
PersonService personService;
public void create(){
Person person=new Person();
person.setLastName("Rahim");
person.setFirstName("Uddin");
person.setAddress("Dhaka");
person.setCity("Dhaka");
personService.addPerson(person);//this time same service layer
//is showing null pointer exception here
}
}
我的MiddleClass是:
<script>
function stop()
{
d=new Date();
d.setHours(0,0,0,0);
document.getElementById("time").value = d;
}
</script>
<form>
<input type=button value="stop" onclick="stop()">
</form>
WHY ??????????是否缺少MiddleClass中的任何注释?
答案 0 :(得分:1)
您正在使用new创建MiddleClass实例。所以Spring无法知道它必须将服务注入MiddleClass实例。它只能将bean注入它自己创建的其他bean中。
因此,MiddleClass必须是一个Spring bean,它必须自动装入控制器,就像服务一样。