Spring基于xml實現(xiàn)自動裝配流程詳解
自動裝配:
根據(jù)指定的策略,在IOC容器中匹配某一個bean,自動為指定的bean中所依賴的類類型或接口類 型屬性賦值
①場景模擬
創(chuàng)建類 UserController
public class UserController { private UserService userService; public void setUserService(UserService userService) { this.userService = userService; } public void saveUser(){ userService.saveUser(); } }
創(chuàng)建接口 UserService
public interface UserService { void saveUser(); }
創(chuàng)建類 UserServiceImpl 實現(xiàn)接口 UserService
public class UserServiceImpl implements UserService { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } @Override public void saveUser(){ userDao.saveUser(); } }
創(chuàng)建接口 UserDao
public interface UserDao { void saveUser(); }
創(chuàng)建類 UserDaoImpl 實現(xiàn)接口 UserDao
public class UserDaoImpl implements UserDao { @Override public void saveUser() { System.out.println("保存成功"); } }
②配置 bean
<bean id="userController" class="com.atguigu.spring.Controller.UserController"> <property name="userService" ref="userService"></property> </bean> <bean id="userService" class="com.atguigu.spring.Service.impl.UserServiceImpl"> <property name="userDao" ref="userDao"></property> </bean> <bean id="userDao" class="com.atguigu.spring.Dao.impl.UserDaoImpl"></bean>
③測試
@Test public void test2(){ ConfigurableApplicationContext ioc = new ClassPathXmlApplicationContext("spring-autowire-xml.xml"); UserController userController = ioc.getBean("userController", UserController.class); userController.saveUser(); }
④使用bean標簽的autowire屬性設置自動裝配效果
自動裝配方式:byType
byType :根據(jù)類型匹配 IOC 容器中的某個兼容類型的 bean ,為屬性自動賦值
若在IOC中,沒有任何一個兼容類型的bean能夠為屬性賦值,則該屬性不裝配,即值為默認值 null
若在IOC中,有多個兼容類型的bean能夠為屬性賦值,則拋出異常 NoUniqueBeanDefinitionException
<bean id="userController" class="com.atguigu.spring.Controller.UserController" autowire="byType"> <!-- <property name="userService" ref="userService"></property>--> </bean> <bean id="userService" class="com.atguigu.spring.Service.impl.UserServiceImpl" autowire="byType"> <!-- <property name="userDao" ref="userDao"></property>--> </bean> <bean id="userDao" class="com.atguigu.spring.Dao.impl.UserDaoImpl"></bean>
⑤測試
自動裝配方式:byName
byName :將自動裝配的屬性的屬性名,作為 bean 的 id 在 IOC 容器中匹配相對應的 bean 進行賦值
<bean id="userController" class="com.atguigu.spring.Controller.UserController" autowire="byName"> <!-- <property name="userService" ref="userService"></property>--> </bean> <bean id="userService" class="com.atguigu.spring.Service.impl.UserServiceImpl" autowire="byName"> <!-- <property name="userDao" ref="userDao"></property>--> </bean> <bean id="userDao" class="com.atguigu.spring.Dao.impl.UserDaoImpl"></bean>
到此這篇關(guān)于Spring基于xml實現(xiàn)自動裝配流程詳解的文章就介紹到這了,更多相關(guān)Spring自動裝配內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
windows命令行中java和javac、javap使用詳解(java編譯命令)
最近重新復習了一下java基礎,這里便講講對于一個類文件如何編譯、運行、反編譯的。也讓自己加深一下印象2014-03-03java定時任務cron表達式每周執(zhí)行一次的坑及解決
這篇文章主要介紹了java定時任務cron表達式每周執(zhí)行一次的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06MyBatis Plus Mapper CRUD接口測試方式
在數(shù)據(jù)庫管理系統(tǒng)中,插入記錄是添加新數(shù)據(jù)條目,而刪除操作包括根據(jù)主鍵ID單條刪除和批量刪除,也可以基于特定條件進行刪除,刪除操作的SQL語句是通過鍵值對在Map中拼接而成,如delete from 表 where key1=value1 AND key2=value22024-09-09