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

Spring 当我使用medicore类使用存储库时,显示空指针异常,spring,spring-mvc,Spring,Spring Mvc,当我从控制器调用服务层时,数据保存在数据库中 我的控制器是: @RestController @RequestMapping("/api") public class ApiController { @Autowired(required = true) PersonService personService; //This is service layer class @RequestMapping("/add") public void add

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

我的控制器是:

@RestController
@RequestMapping("/api")
public class ApiController {
    @Autowired(required = true)
    PersonService personService;        //This is service layer class

    @RequestMapping("/add")
    public void add(){

        person.setLastName("Rahim");
        person.setFirstName("Uddin");
        person.setAddress("Dhaka");
        person.setCity("Dhaka");
        personService.add(person);
   }
}
服务层是:

@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();
   }
}
直到现在一切都很好

但当我通过另一个类调用服务层时,会显示null指针异常。 当时: 我的控制器是:

@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中没有任何注释吗?

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

因此,中间类必须是Springbean,并且必须自动连接到控制器中,就像服务一样。

可能重复的