Spring框架的核心功能之一就是經過依賴注入的方式來管理Bean之間的依賴關係。spring
IService:框架
1 public interface IUserService { 2 /* 3 * 說話 4 */ 5 void Say(String msg); 6 }
ServiceImp:yii
1 public class UserServiceImpl implements IUserService { 2 3 private IUserDao iUserDao; 4 5 public void setUserDao(IUserDao dao) { 6 this.iUserDao=dao; 7 } 8 9 /* 10 * 說話 11 */ 12 public void Say(String msg) { 13 this.iUserDao.Say(msg); 14 } 15 }
IDao:ide
1 public interface IUserDao { 2 /* 3 * 說話 4 */ 5 void Say(String msg); 6 }
DaoImp:函數
1 public class UserDaoImpl implements IUserDao { 2 /* 3 * 說話 4 */ 5 public void Say(String msg) { 6 System.out.println(msg); 7 } 8 }
Bean:測試
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://www.springframework.org/schema/beans 4 http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <bean id="userServerId" class="serviceImpl.UserServiceImpl"> 7 <!-- 此處是set屬性注入,name值必須和UserServiceImpl中屬性名一致 --> 8 <property name="userDao" ref="userDaoId"></property> 9 </bean> 10 </beans>
測試輸出:this
1 public class MainShow { 2 public static void main(String[] args) { 3 System.out.println("開始執行。。。"); 4 5 ApplicationContext context=new ClassPathXmlApplicationContext("resources/beans.xml"); 6 IUserService idog=(IUserService)context.getBean("userServerId"); 7 idog.Say("汪汪汪。。。"); 8 } 9 }
IService:spa
1 public interface IDogService { 2 /* 3 * 叫 4 */ 5 void Call(String msg); 6 }
ServiceImp:3d
1 public class DogServiceImpl implements IDogService { 2 3 private IDogDao idogdao; 4 5 public DogServiceImpl(DogDaoImpl dogDao) { 6 System.out.println("開始構造注入....."); 7 this.idogdao=dogDao; 8 } 9 10 /* 11 * 叫聲 12 */ 13 public void Call(String msg) { 14 idogdao.Call(msg); 15 } 16 }
IDao:code
1 public interface IDogDao { 2 /* 3 * 叫 4 */ 5 void Call(String msg); 6 }
DaoImp:
1 public class DogDaoImpl implements IDogDao { 2 3 public void Call(String msg) { 4 System.out.println("汪汪汪:"+msg); 5 } 6 }
Bean:
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://www.springframework.org/schema/beans 4 http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <!-- 構造注入 --> 7 <bean id="dogId" class="serviceImpl.DogServiceImpl"> 8 <constructor-arg ref="dogDao"/> 9 </bean> 10 11 <bean id="dogDao" class="daoImpl.DogDaoImpl"></bean> 12 </beans>
IService:
1 public interface ICarService { 2 /* 3 * 汽車啓動 4 */ 5 void Start(); 6 }
ServiceImp:
1 private ICarDao idao; 2 3 public void setIdao(CarDaoImpl impl) { 4 this.idao = impl; 5 } 6 7 public void Start() { 8 idao.Start(); 9 } 10 }
IDao:
1 public interface ICarDao { 2 /* 3 * 汽車啓動 4 */ 5 void Start(); 6 }
DaoImp:
1 public class CarDaoImpl implements ICarDao { 2 3 public void Start() { 4 System.out.println("汽車開始啓動。。。。。。"); 5 } 6 }
Bean:
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://www.springframework.org/schema/beans 4 http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <!-- 內部注入 --> 7 <bean id="carId" class="serviceImpl.CarServiceImpl"> 8 <property name="idao"> 9 <bean class="daoImpl.CarDaoImpl"></bean> 10 </property> 11 </bean> 12 </beans>
1 <bean id="customer" class="com.yiibai.common.Customer" autowire="byName" />
ServiceImp:
1 public class UserServiceImpl implements IUserService { 2 3 private IUserDao userDao; 4 5 public void setUserDao(UserDaoImpl dao) { 6 this.userDao=dao; 7 } 8 9 /* 10 * 說話 11 */ 12 public void Say(String msg) { 13 this.userDao.Say(msg); 14 } 15 }
IDao:
1 public interface IUserDao { 2 /* 3 * 說話 4 */ 5 void Say(String msg); 6 }
DaoImp:
1 public class UserDaoImpl implements IUserDao { 2 /* 3 * 說話 4 */ 5 public void Say(String msg) { 6 System.out.println(msg); 7 } 8 }
一般狀況下,進行明確的裝配目標 Bean
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://www.springframework.org/schema/beans 4 http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 7 <bean id="userServerId" class="serviceImpl.UserServiceImpl"> 8 <!-- 此處是set屬性注入,name值必須和UserServiceImpl中屬性名一致 --> 9 <property name="userDao" ref="userDaoId"></property> 10 </bean> 11 12 <bean id="userDaoId" class="daoImpl.UserDaoImpl"></bean> 13 </beans>
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://www.springframework.org/schema/beans 4 http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <!-- Type自動裝配注入 --> 7 <bean id="userServerId" class="serviceImpl.UserServiceImpl" autowire="byType"/> 8 <bean id="userDaoId" class="daoImpl.UserDaoImpl"></bean> 9 </beans>
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://www.springframework.org/schema/beans 4 http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <!-- Name 自動裝配注入 --> 7 <bean id="userServerId" class="serviceImpl.UserServiceImpl" autowire="byName"/> 8 <bean id="userDao" class="daoImpl.UserDaoImpl"></bean> 9 </beans>
ServiceImp:
1 public class DogServiceImpl implements IDogService { 2 3 private IDogDao idogdao; 4 5 public DogServiceImpl(DogDaoImpl dogDao) { 6 System.out.println("開始構造注入....."); 7 this.idogdao=dogDao; 8 } 9 10 /* 11 * 叫聲 12 */ 13 public void Call(String msg) { 14 idogdao.Call(msg); 15 } 16 }
IDao:
1 public interface IDogDao { 2 /* 3 * 叫 4 */ 5 void Call(String msg); 6 }
DaoImp:
1 public class DogDaoImpl implements IDogDao { 2 3 public void Call(String msg) { 4 System.out.println("狗叫:"+msg); 5 } 6 }
一般狀況下,使用構造注入Bean,配置以下:
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://www.springframework.org/schema/beans 4 http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <!-- 構造注入 --> 7 <bean id="dogId" class="serviceImpl.DogServiceImpl"> 8 <constructor-arg ref="dogDao"/> 9 </bean> 10 <bean id="dogDao" class="daoImpl.DogDaoImpl"></bean> 11 </beans>
自動裝配用構造函數啓用後,你能夠不設置構造器屬性。Spring會找到兼容的數據類型,並自動裝配它。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- Constructor 構造自動裝配 --> <bean id="dogId" class="serviceImpl.DogServiceImpl" autowire="constructor"/> <!-- 有無Id均可以 --> <bean id="dogDaos" class="daoImpl.DogDaoImpl"></bean> </beans>