当我使用medicore类来使用存储库时,显示空指针异常

时间:2016-02-21 08:56:34

标签: spring spring-mvc

当我从控制器调用服务层时,数据将保存在数据库中。

我的控制器是:

@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中的任何注释?

1 个答案:

答案 0 :(得分:1)

您正在使用new创建MiddleClass实例。所以Spring无法知道它必须将服务注入MiddleClass实例。它只能将bean注入它自己创建的其他bean中。

因此,MiddleClass必须是一个Spring bean,它必须自动装入控制器,就像服务一样。