spring 注入的三種方法
自己總結下 比較淺的 理解 適合 初學者:
1.構造方法 注入
直接上程式碼
<!-- 構造方法注入 --> <bean id="testservice" class="com.javen.service.impl.ITestServiceImpl"> <constructor-arg ref="testDaoImpl"></constructor-arg> </bean> <bean id ="testDaoImpl" class="com.javen.dao.testDaoImpl"/>
先在spring配置檔案中,一個bean class指向你個物件 的路徑,就比如上面的testDaoImpl。在寫個bean物件,指向service的物件路徑, 在bean加 <constructor-arg/> 屬性 。 <constructor-arg/>的意思就是通過建構函式注入。
public class ITestServiceImpl implements TestService{ private testDao testDaoImpl; public ITestServiceImpl(testDao testDaoImpl) { this.testDaoImpl = testDaoImpl; } public static void main(String[] args) { ClassPathXmlApplicationContext cx = new ClassPathXmlApplicationContext("spring-mybatis.xml"); ITestServiceImpl service = (ITestServiceImpl) cx.getBean("testservice"); service.testDS(); } @Override public void testDS() { testDaoImpl.doTest(); } }
在ITestServiceImpl 通過構造方法注入testDao,為能夠訪問Dao的方法 如上面程式碼, 在service實現類中加一個屬性。(屬性名要和 你在配置檔案bean裡的屬性constructor-arg的ref 保持一致)。 然後在service 類中寫個有引數的建構函式。這樣就注入Dao ,在service裡就可以訪問Dao的方法。 我這裡Dao的方法就是一條列印語句。測試成功 說明Dao成功注入了service類中
2.set get 注入方法
<!-- set get方法注入 --> <bean id="testservice" class="com.javen.service.impl.ITestServiceImpl"> <property name="testDaoImpl" ref="testDaoImpl"></property> </bean> <bean id ="testDaoImpl" class="com.javen.dao.testDaoImpl"/>
和構造注入異曲同工之妙。
private testDao testDaoImpl; public testDao getTestDaoImpl() { return testDaoImpl; }
public void setTestDaoImpl(testDao testDaoImpl) { this.testDaoImpl = testDaoImpl; }
3. 使用spring的註解來注入
在要注入的Dao 的屬性上 加 @Autowired。
就先這樣吧!!!!!!