1. 程式人生 > >java web之路 spring 基於@Autowried註解的依賴注入

java web之路 spring 基於@Autowried註解的依賴注入

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>