1. 程式人生 > >Spring容器管理對象和new對象

Spring容器管理對象和new對象

類的方法 反轉 bean webapp getbean nco ade get 它的

問題:一個業務類交給spring管理,並自動註入了其他業務類作為屬性,方法中通過全局屬性調用其他業務類的方法。當該業務類是通過new獲取的情況下,該實例的屬性會是null(不存在依賴註入實例),調用方法就會報空指針。

為保證該方法無論是被new出來的對象調用還是被spring容器對象引用都能正常使用,方法中就要 使用spring管理的類 。


獲取spring管理的對象:
 WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); 
 Object obj=wac.getBean(beanID);

spring的IOC和DI理解:
控制反轉:對象實例在spring啟動後都會被創建,只需要從容器中獲取就可以使用。可以通過xml配置bean的方法獲取,也可以通過註解掃描的方法創建。@Component
依賴註入:字面意思指的是類的屬性實例化過程。在獲取到被spring管理的對象時,該對象的屬性如果在spring容器也存在實例,那麽可以直接從spring獲取(註入),
也就該類的屬性依賴於對象本身的實例化而實例化。如果對象不是從容器獲取,那麽它的屬性也不會從容器實例化。可以通過xml配置註入,也可以通過在可掃描類下加@Autowired依賴註入。

總結:new對象與spring管理的對象沒有關聯。new對象並沒有spring參與管理,它的屬性不存在依賴註入,它的屬性要手動實例化。spring管理的對象與它的屬性(被註入的屬性)存在依賴關系;






Spring容器管理對象和new對象