@Autowired抱空指針異常解決方案


先給總結,再給實例

前提:

  類B里用了@Autowired注解,類A和類B都加了@Component或者其他形式如@Service這樣都注解。

結果:

  如果類A 想訪問類B,采用new B()的方式,則在類B里沒法訪問bean對象(也就是加了@Autowired的對象),會報空指針;

             如果在類A中注入類B,則在類B里可以訪問注入的bean對象

原因:@Autowired注入即將對象注入到Spring的IOC容器內,而new出來的實例脫離了Spring的管理,兩個對象不在一個管理者管理下,也即無法聯系起來

 

 

舉個最簡單的例子: 

controller調用service,

@Controller
public class TestController {
    @Autowired
    TestService testService;
    @RequestMapping("/hello")
    public void getTest(){
        testService.sayHello();
        new TestServiceImpl().sayHello();
    }
}
@Service
public class TestServiceImpl implements TestService {
    @Autowired
    ApplicationContext ac;
    @Override
    public void sayHello() {
        System.out.println("----> " + ac);
        System.out.println("----> " + "hello world");
    }
}

 

看結果,一目了然

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM