java web之路 spring 基於@Autowried註解的依賴注入
阿新 • • 發佈:2019-01-22
spring 2.5以後可以使用註解的方式添加註入,在xml中這種方式預設是關閉的,需要手動開啟,即在xml中新增
<context:annotation-config />
@Autowried註解可以用在屬性、建構函式、set方法中。在需要注入的類中新增@Autowried註解,在使用的時候,spring會自動載入類例項。
不使用註解xml配置為:
<bean id="textEditor" class="tutorialspoint.TextEditor" scope="prototype"> <constructor-arg ref="spellChecker"></constructor-arg> </bean> <bean id="spellChecker" class="tutorialspoint.SpellChecker" scope="prototype"></bean>
註解在屬性上的應用
package autowired; import org.springframework.beans.factory.annotation.Autowired; public class TextEditor { @Autowired private SpellChecker spellChecker; public SpellChecker getSp() { return spellChecker; } public void setSp(SpellChecker spellChecker) { this.spellChecker = spellChecker; } public void spellChecker(){ spellChecker.checkSpelling(); } }
依賴的類
package autowired;
public class SpellChecker {
public SpellChecker(){
System.out.println("Inside SpellChecker constructor.");
}
public void checkSpelling(){
System.out.println("Inside checkSpelling." );
}
}
main方法
package autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainApp { public static void main(String[] arg) { // TODO Auto-generated constructor stub ApplicationContext con = new ClassPathXmlApplicationContext("autowired.xml"); TextEditor ted = (TextEditor)con.getBean("textEditor"); ted.spellChecker(); } }
xml檔案將變得更簡潔
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 開啟註解方式 -->
<context:annotation-config />
<bean id="textEditor" class="autowired.TextEditor"></bean><!-- 使用註解方式後,不需再寫property屬性 -->
<bean id="spellChecker" class="autowired.SpellChecker"></bean>
</beans>