Spring-IOC 사용에 대한 간단한 참조 :
스프링 IOC 및 콩의 범위 속성의 간단한 인스턴스 분석
1. 설정 방법을 통해 다른 데이터 유형을 주입하십시오
테스트 클래스 코드 (SET 메소드에 주입 된 속성은 세트 메소드와 함께 추가되어야합니다)
/** 세트 메소드를 통한 주입 예제*/public class ioc_by_set {/** Inject Integer Type 매개 변수*/개인 정수 ID;/** Inject String 유형 매개 변수*/개인 문자열 이름;/** 주입 엔티티 Bean*/개인 사용자 사용자;/** inject array*/private object [] array;/private list </private set </** unection set> list; list; SET;/** 맵 키-값 쌍*/개인지도 <개체, 객체, 객체> 맵;/** 주입 속성 유형*/개인 속성 속성;/** 주입 빈 문자열*/개인 문자열 빈 값을 주입하십시오 null) {return false;} else {system.out.println ( "id :" + id);}System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- name);}System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 정렬) {System.out.println(object.toString());}}System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {system.out.println ( "set :"); for (개체 객체 : set) {System.out.println(object.toString());}}System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {system.out.println (enther.getKey () + "|" + entry.getValue());}}System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ entry.getValue());}}System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- setName (string name) {this.name = name;} public void setUser (user user) {user user) {this.user = user;} public void setArray (object [] array) {this.array = array;} public void setlist (list <botort> list) {this.list = list;} public void setset (set) {this.set = set) {this.set = set). setMap (map <object, object> map) {this.map = map;} public void setProperties (속성 속성) {this.properties = properties;} public void setemptyValue (string emptyvalue) {this.emptyvalue = emvallvalue;} public void void void void void void void void {thist.nullvalue). nullValue;}}ApplicationContext.xml 구성
<!-설정-> <bean id = "ioc_by_set"> <! <!-주입 ID 속성-> <property name = "id"value = "1"/> <!-<!-<! </property> <!-내부 Bean 주입 정의-> <속성 이름 = "user"> <bean> <property name = "id"value = "1"/> <속성 이름 = "username"value = "내부 bean"/> <property name = "property name ="value = "233"/> </bean> </property> <! <property type = "array"> <! <! <! <value> array01 </value> <value> array02 </value> <value> array03 </value03 </value> </array> </property> <!-목록 유형-> <property name = "list"> <list> <!-목록에서 요소를 정의합니다-> <balke> list01 </value> <sall02 </propert> </list> </list> </list> </list> </list> </list> </list> </list> 유형-> <property> <property --- 목록에서 요소를 정의합니다-> <value> list02 </value> <value> list03 </value> </list> </property> <!-Inject set type-> <속성 이름 = "set"> <set> <!-set에서 요소를 정의합니다-> <value> </sett02 <-value> </sett> <! MAP 유형-> <property name = "map"> <map> <!-맵에서 키 값 쌍을 정의합니다-> <enty> <key> <value> mapkey01 </value> </key> <value> mapValue01 </value> </enterd> <key> <key> <key> <key> <key> <key> <key> <value> </key> </legent> </legent> </legent> </legent> </value> <!-변동 속성 유형-> <속성 이름 = "properties"> <props> <!-속성에서 키-값 쌍을 정의합니다-> <prop key = "propkey1"> propvalue1 </prop> <prop key = "propkey2"> propvalue2 </prop> </propss> </property> <vally string-> emalloval name> <emplamval </vally string-> </property> <!-주입 null 값-> <속성 이름 = "nullvalue"> <null/> </property> </bean>
테스트 코드
public class ioc_test {private applicationcontext ctx; @before public void load () {// ApplicationContext.xml configuration file ctx = new ClassPathXmlApplicationContext ( "ApplicationContext.xml");}@test public void settest () {ioc_by_set ioc = (ioc_by_set) ctx.getBean ( "ioc_by_set"); ioc.checkattr ();}}콘솔 결과 :
id:1----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! !
2. 건축 방법을 통해 다양한 유형의 속성을 주입하십시오
참고 : JDK1.8 버전을 사용하는 경우 스프링 관련 JAR 패키지를 버전 4.X 이상으로 업그레이드하십시오. 그렇지 않으면 양립 할 수없는 생성자가 주입됩니다.
테스트 클래스 코드
/** 생성자를 통한 주입의 예*/public class ioc_by_constructor {private integer id; private string name; private 사용자 이름; 개인 목록 <bood> 목록; public ioc_by_constructor () {} public ioc_by_constructor (Integer ID, 문자열 이름, 사용자, 목록 <boter> 목록) {this.id =; 목록;}/** 주입이 성공했는지 확인*/public boolean checkattr () {if (id == null) {return false;} else {System.out.println ( "id :" + id);}System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + "|" + getUserName () + " + user.getPassWord());}System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 진실;}}ApplicationContext.xml 구성
<!-생성자-arg 값 = "p & g"/> <!-주입 객체-> <bean id = "ioc_by_constructor"> <!-주입 객체-> <ean> <constructor-arg value = "1"type = "java.lang.integer"/> <!-intrector-arg value = p & g "! <! <! <constructor-arg> <!-내장 객체-> <ean> <생성자-arg 값 = "1"/> <생성자-arg 값 = "Constructor-arg value ="Constructor-arg value = "666"/> </bean> </constructor-arg> <!-<value-arg> <value2 <value> <value> <value> <value> <value> list03 </value> </list> </constructor-arg> </bean>
테스트 코드 :
public class ioc_test {private applicationcontext ctx; @before public void load () {// ApplicationContext.xml configuration file ctx = new ClassPathXmlApplicationContext ( "ApplicationContext.xml");}@test public void constructortest () {ioc_by_constructor ioc = ctx.getBean ( "ioc_by_constructor"); ioc.checkattr ();}}콘솔 결과 :
id:1----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! !
3. 자동 주입 (자동 조립품)
자동 어셈블리는 일부 코드를 저장할 수 있지만 사용하는 것이 좋습니다.
테스트 클래스 코드 :
/** 자동 조립 주입*/public class ioc_by_auto {개인 사용자 사용자;/** 주입이 성공했는지 확인*/public boolean checkattr () {if (user == null) {return false;} else {system.out.println ( "user :" + user.getid () + "|" + user.getusername () | user.getpassword ());} system.out.println ( "정확한 !!!"); Return true;}/** 자동 어셈블리 속성은 설정 메소드를 설정해야합니다*/public void setUser (user user) {this.user = user;}}ApplicationContext.xml 구성
<!-자동 어셈블리에 의해 얻은 콩-> <bean id = "user"> <property name = "id"value = "1"/> <속성 이름 = "value ="auto-assembly "/> <property name ="property name = "vale ="233 "/> </bean> <! a bean autowire : byname : byname에 따른 속성에 따른 ean name of the bean type at the propegy type at the bean type. 수업. 여러 콩이 일치하는 경우 예외 생성자가 클래스의 생성자 매개 변수 유형에 따라 해당 콩과 일치합니다. 기본값, 자동 어셈블리 기본값이 사용되지 않음을 의미합니다. 상단 라벨 <Beans>-> <bean id = "ioc_by_auto"autowire = "byname"> </bean>의 기본 AUTOWIRE 속성에 의해 결정됩니다.
테스트 코드
public class ioc_test {private applicationcontext ctx; @before public void load () {// ApplicationContext.xml configuration file ctx = new classPathXmlApplicationContext ( "ApplicationContext.xml");}@test public void autoTest () {ioc_by_auto ioc =). ctx.getBean ( "ioc_by_auto"); ioc.checkattr ();}}콘솔 결과
사용자 : 1 | 자동 어셈블리 | 233은 정확합니다! ! !
위의 내용은 ByName 모드를 사용하고 있습니다. 다른 모드의 구성 코드가 표시되었으며 테스트는 수행되지 않습니다.
4. P 네임 스페이스를 사용하여 속성을 주입합니다
테스트 클래스 코드
/** p namespace를 사용한 주입*/public class ioc_by_p {개인 정수 ID; 개인 문자열 이름; 개인 사용자 이름;/** 주입이 성공했는지 확인*/public boolean checkattr () {if (id == null) {return false;} else {system.out.println ( "id :" " + id);}System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- name);}System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- id) {this.id = id;} public void setname (문자열 이름) {this.name = name;} public void setUser (사용자) {this.user = user;}}ApplicationContext.xml 구성
<!-p 네임 스페이스를 사용하여 다양한 유형의 속성을 주입합니다-> <bean id = "user2"> <property name = "id"value = "1"/> <속성 이름 = "username"value = "p"/> <property name = "property"value = "233"/> </bean> <bean id = "ioc_by_p"p : id = "p : names pace" P : user-Ref = "user2"> </bean>
테스트 코드
public class ioc_test {private applicationcontext ctx; @before public void load () {// ApplicationContext.xml configuration file ctx = new ClassPathXmlApplicationContext ( "ApplicationContext.xml");}@test public void ptest () {ioc_by_p IOC = (ioc_by_p). ctx.getBean ( "ioc_by_p"); ioc.checkattr ();}}콘솔 결과
id:1----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! !
5. 주석을 사용하여 주입합니다
Spring은 3.0 이후에 주석 기반 주입을 제공했습니다.
1.@자동 조립 작업을 완료하기위한 멤버 변수, 방법 및 생성자의 Autowired-Nantation. 사용하는 것이 좋습니다.
2. 동일한 유형의 여러 콩의 조립품을 해결하기 위해 @AUATOWERED로 구성된 @Qualifier
3. @resource-jsr-250 표준 주석, 함수는 @autowired와 동일하지만 @autowired는 Bytype에 따라 자동으로 주입되며 @Resource는 기본적으로 ByName에 따라 자동으로 주입됩니다.
4. @postconstruct- 메소드에 @postconstruct @postconstruct를 추가하면 Bean이 초기화 된 후 스프링 컨테이너에 의해이 방법이 실행됩니다.
5. @PRODSTROY-ADD 주석 @PREDESTROY 방법에 대한이 방법은 Bean이 초기화 된 후 스프링 컨테이너에 의해 실행됩니다.
6. @구성 요소 전용 @Component 주석을 해당 클래스에 추가하면 클래스는 Bean으로 정의됩니다. 사용하는 것이 좋습니다. @repository, @service, @controller의 세 가지 더 세련된 유형을 사용하는 것이 좋습니다.
@repository 스토리지 레이어 Bean
@Service 비즈니스 계층 Bean
@Controller 디스플레이 레이어 빈
7.@SCOPE 콩의 범위를 정의하십시오
먼저 ApplicationContext.xml을 구성하여 주석을 활성화하십시오
<!-패키지에서 주석이 달린 클래스를 스캔합니다-> <context : component-scan base-package = "com.bc.ioc.demo05"/>
엔티티 콩 주석
@RepositoryPublic 클래스 사용자 {private integer id = 1; private string username = "주석 주입"; 개인 문자열 비밀번호 = "233"; public user () {super ();} public user (integer id, string username, string password) {super (); this.id = id; this.username = username; getUserName () {return username;} public string getPassword () {return password;} public void setId (Integer ID) {this.id = id;} public void setUserName (string username) {this.username = username;} public void setpassword (string password) {this.password = password;}}테스트 클래스 코드 주석
/** 주석*/@service ( "ioc_by_annotation")) 공개 클래스 ioc_by_annotation {@Resource private user user; public void setUser (user user) {this.user = user;}/** 주입이 성공했는지 확인*/public boolean checkattr (if) {returne) {system.out.println ( "user :" + user.getId () + "|" + user.getUername () + "|" + user.getPassword ());} system.out.println ( "정확한 !!!"); return true;}}테스트 코드
public class ioc_test {private applicationcontext ctx; @before public void load () {// ApplicationContext.xml configuration file ctx = new ClassPathXmlApplicationContext ( "ApplicationContext.xml");}@test public void annotationTest () {ioc_by_annotation ioc = ctx.getBean ( "ioc_by_annotation"); ioc.checkattr ();}}콘솔 출력
테스트 후 주석 주입을 사용합니다. ApplicationContext.xml이 다른 주입 방법으로 구성되면 오류 가보고되어 다른 주입 방법이 비정상적입니다.
사용자 : 1 | 주석 주입 | 233이 정확합니다! ! !
6. 정적 공장 방법을 구성하여 Bean 주입
정적 공장 코드
/** 정적 공장*/public class eTaticFactory {public static integer getId () {return 1;} public static string getName () {return "static factory";} public static user getUser () {return 새 사용자 (1, "공장 사용자", "666")}테스트 클래스 코드
/** 정적 공장을 통한 주입*/public class ioc_by_staticfactory {private integer id; private string; private string name; private user user;/** 주입이 성공했는지 확인*/public boolean checkattr () {if (id == null) {return;} else {system.out.out.println ( "id :"id : " +"{return false; id);}System.out.println("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- name);}System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- id) {this.id = id;} public void setname (문자열 이름) {this.name = name;} public void setUser (사용자) {this.user = user;}}ApplicationContext.xml 구성
<!-정적 공장 메소드를 구성하는 Bean은 실제로 공장 메소드에서 Bean으로 반환 된 값을 구성하고 있습니다-> <bean id = "inctory_id"팩토리-메드 = "getId"/> <bean id = "factory_name"factory-method = "getName"/> <bean id = "factory_user"factory-method = "getsus"/> <idoc "/> <i id ="iDAt "/>. <property name = "id"ref = "factory_id"/> <속성 이름 = "name"ref = "factory_name"/> <property name = "user"ref = "factory_user"/> </bean>
테스트 코드
public class ioc_test {private ApplicationContext ctx; @before public void load () {// ApplicationContext.xml configuration file ctx = new ClassPathXmlApplicationContext ( "ApplicationContext.xml");}@test public void staticfactorytest () {ioc_by_static Ioc = (ioc_by_by_static Ioc =) ctx.getBean ( "ioc_by_staticfactory"); ioc.checkattr ();}}콘솔 출력 결과
id:1----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! !
7. 예제 공장 방법을 통한 주입
정적 공장과의 차이점은 인스턴스 공장이 정적이 아니라는 것입니다. 메소드를 구성하기 전에 먼저 새 인스턴스 팩토리 객체가 필요합니다. 새로운 객체는 스프링에 의해서도 관리됩니다.
공장 코드
/** 인스턴스 팩토리*/public class factory {public integer getId () {return 1;} public String getName () {return "instance factory";} public user getUser () {return 새 사용자 (1, "인스턴스 팩토리 사용자", "233");}}테스트 클래스 코드
/** 인스턴스 팩토리 주입*/public class ioc_by_fackory {개인 정수 ID; 개인 문자열 이름; 개인 사용자 이름; 사유 사용자 이름;/** 주입이 성공했는지 확인*/public boolean checkattr () {if (id == null) {return false;} else {System.out.println ( "id :"id : " + id);}System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- name);}System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- id) {this.id = id;} public void setname (문자열 이름) {this.name = name;} public void setUser (사용자) {this.user = user;}}ApplicationContext.xml 구성
<!-인스턴스 팩토리 Bean-> <bean id = "factory"/> <!-인스턴스 팩토리 메소드 Bean-> <bean id = "f_id"F_ID "F_ID"factory-bean = "factory"factory-method = "getID"/<bean id = "f_name"factory-bean = "Factory"Factory-Method = "getName"/> Factory-Method = "getUser"/> <!-해당 인스턴스 인스턴스 공장 메서드 Bean-> <bean id = "ioc_by_factory"> <property name = "id"ref = "f_id"/> <property name = "name"ref = "f_name"/> <property name = "user"ref = "f_user"/bean>
테스트 클래스 코드
public class ioc_test {private applicationcontext ctx; @before public void load () {// ApplicationContext.xml configuration file ctx = new ClassPathXmlApplicationContext ( "ApplicationContext.xml");}@test public void factorytest () {ioc_by_factory = (ioc_by_factory =); ctx.getBean ( "ioc_by_fackory"); ioc.checkattr ();}}콘솔 출력
id:1----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! !
요약
위의 모든 것은 스프링 IOC의 주입 방법과 다른 데이터 유형의 주입에 대한이 기사의 간단한 논의에 관한 것입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!