단순 코드 기록/Spring

Spring_Autowire

일일일코_장민기 2024. 2. 8. 12:07
728x90
Head에 등록하는 경우(byName)

 

<?xml version="1.0" encoding="UTF-8"?>
<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"
default-autowire="byName">
<!-- 
AutoWire: 자동주입(이름 / 타입을 이용)(직접 입력)
빈 부분을 찾아서 자동으로 주입 (<property name="cat" ref="xx"/>를 입력하지 않아도 main에서 사용 가능)
1. byType: 넣을 게 딱 하나씩만 있을 때 사용 가능(아니면 뭘 넣어야 할지 판단 못함)
2. byName: dto의 멤버변수와 똑같은 id를 찾아서 입력
-->

<bean id="cat" class="cohttp://m.spring.Cat">
<property name="catName" value="야옹이"></property>
<property name="catAge" value="10"></property>
</bean>

<bean id="cat2" class="cohttp://m.spring.Cat"> <!-- 멤버변수 id가 cat이기 때문에 입력 X -->
<property name="catName" value="나비"></property>
<property name="catAge" value="20"></property>
</bean>

<bean id="dog" class="cohttp://m.spring.Dog"> <!-- id가 yy면 에러 -->
<property name="dogName" value="멍멍이"></property>
</bean>

<bean id="onePerson" class="cohttp://m.spring.Person">
<!--  <property name="cat" ref="xx"/> -->
<!--  <property name="dog" ref="yy"></property> -->
<property name="userName" value="홍길동"></property>
</bean>
</beans>

 

Heda에 등록하는 경우(byType)

<?xml version="1.0" encoding="UTF-8"?>
<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"
default-autowire="byType">
<!-- 
AutoWire: 자동주입(이름 / 타입을 이용)(직접 입력)
빈 부분을 찾아서 자동으로 주입 (<property name="cat" ref="xx"/>를 입력하지 않아도 main에서 사용 가능)
-->

<bean id="xx" class="cohttp://m.spring.Cat">                                  겹치는 타입이 없어야 함
<property name="catName" value="야옹이"></property>
<property name="catAge" value="10"></property>
</bean>

<bean id="yy" class="cohttp://m.spring.Dog">
<property name="dogName" value="멍멍이"></property>
</bean>

<bean id="onePerson" class="cohttp://m.spring.Person">
<!--  <property name="cat" ref="xx"/> -->
<!--  <property name="dog" ref="yy"></property> -->
<property name="userName" value="홍길동"></property>
</bean>



</beans>

 

bean의 속성으로 등록하는 경우(byType)

<?xml version="1.0" encoding="UTF-8"?>
<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"
>
<!-- 
AutoWire: 자동주입(이름 / 타입을 이용)(직접 입력)
빈 부분을 찾아서 자동으로 주입 (<property name="cat" ref="xx"/>를 입력하지 않아도 main에서 사용 가능)
1. byType: 넣을 게 딱 하나씩만 있을 때 사용 가능(아니면 뭘 넣어야 할지 판단 못함)
2. byName: dto의 멤버변수와 똑같은 id를 찾아서 입력
-->

<bean id="xx" class="cohttp://m.spring.Cat">
<property name="catName" value="야옹이"></property>
<property name="catAge" value="10"></property>
</bean>
<!-- 
<bean id="cat2" class="cohttp://m.spring.Cat"> 멤버변수 id가 cat이기 때문에 입력 X
<property name="catName" value="나비"></property>
<property name="catAge" value="20"></property>
</bean>
 -->
<bean id="yy" class="cohttp://m.spring.Dog">
<property name="dogName" value="멍멍이"></property>
</bean>

<bean id="onePerson" class="cohttp://m.spring.Personautowire="byType"><!-- autowire을 속성으로 추가 -->
<!--  <property name="cat" ref="xx"/> -->
<!--  <property name="dog" ref="yy"></property> -->
<property name="userName" value="홍길동"></property>
</bean>



</beans>

 

 

Bean + Primary(주입 대상 선택)

<?xml version="1.0" encoding="UTF-8"?>
<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"
>
<!-- 
AutoWire: 자동주입(이름 / 타입을 이용)(직접 입력)
빈 부분을 찾아서 자동으로 주입 (<property name="cat" ref="xx"/>를 입력하지 않아도 main에서 사용 가능)
1. byType: 넣을 게 딱 하나씩만 있을 때 사용 가능(아니면 뭘 넣어야 할지 판단 못함)
2. byName: dto의 멤버변수와 똑같은 id를 찾아서 입력
-->

<bean id="xx" class="cohttp://m.spring.Cat">
<property name="catName" value="야옹이"></property>
<property name="catAge" value="10"></property>
</bean>

<bean id="yy" class="cohttp://m.spring.Catprimary="true"> <!-- 자동 주입을 설정(primary="true") -->
<property name="catName" value="나비"></property>
<property name="catAge" value="20"></property>
</bean>

<bean id="zz" class="cohttp://m.spring.Cat">
<property name="catName" value="몽크"></property>
<property name="catAge" value="30"></property>
</bean>

<bean id="dd" class="cohttp://m.spring.Dog"> <!-- id가 yy면 에러 -->
<property name="dogName" value="멍멍이"></property>
</bean>

<bean id="onePerson" class="cohttp://m.spring.Personautowire="byType">
<!--  <property name="cat" ref="xx"/> -->
<!--  <property name="dog" ref="yy"></property> -->
<property name="userName" value="홍길동"></property>
</bean>



</beans>


 

 

 

 

Bean + Candidate=false(주입 대상 제외)

<?xml version="1.0" encoding="UTF-8"?>
<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"
>
<!-- 
AutoWire: 자동주입(이름 / 타입을 이용)(직접 입력)
빈 부분을 찾아서 자동으로 주입 (<property name="cat" ref="xx"/>를 입력하지 않아도 main에서 사용 가능)
1. byType: 넣을 게 딱 하나씩만 있을 때 사용 가능(아니면 뭘 넣어야 할지 판단 못함)
2. byName: dto의 멤버변수와 똑같은 id를 찾아서 입력
-->

<bean id="xx" class="cohttp://m.spring.Catautowire-candidate="false"> <!-- 자동 주입을 차단(autowire-candidate="false") -->
<property name="catName" value="야옹이"></property>
<property name="catAge" value="10"></property>
</bean>

<bean id="yy" class="cohttp://m.spring.Catautowire-candidate="false"> <!-- 자동 주입을 차단(autowire-candidate="false") -->
<property name="catName" value="나비"></property>
<property name="catAge" value="20"></property>
</bean>

<bean id="zz" class="cohttp://m.spring.Cat">
<property name="catName" value="몽크"></property>
<property name="catAge" value="30"></property>
</bean>

<bean id="dd" class="cohttp://m.spring.Dog"> <!-- id가 yy면 에러 -->
<property name="dogName" value="멍멍이"></property>
</bean>

<bean id="onePerson" class="cohttp://m.spring.Person" autowire="byType">
<!--  <property name="cat" ref="xx"/> -->
<!--  <property name="dog" ref="yy"></property> -->
<property name="userName" value="홍길동"></property>
</bean>



</beans>

 

 

 

 

@Autowired

 

package com.spring;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Required;

public class Person {

private String userName;
private int age;
@Autowired
Cat cat;

@Autowired
private Dog dog;

@Override
public String toString() {
return "Person [userName=" + userName + ", age=" + age + ", cat=" + cat + ", dog=" + dog + "]";
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(String userName, int age, Cat cat, Dog dog) {
super();
this.userName = userName;
this.age = age;
this.cat = cat;
this.dog = dog;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Cat getCat() {
return cat;
}
public void setCat(Cat cat) {
this.cat = cat;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}



}

 

 

 

 

 

<?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.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- Namespaces에서 context 추가 -->

<context:annotation-config></context:annotation-config>

<bean id="cat" class="cohttp://m.spring.Cat">
<constructor-arg name="catName" value="야옹이"/>
<constructor-arg name="catAge" value="20"/>
</bean>

<bean id="pet01" class="cohttp://m.spring.Cat">
<constructor-arg name="catName" value="뭉크"/>
<constructor-arg name="catAge" value="20"/>
</bean>


<bean id="dog" class="cohttp://m.spring.Dog"></bean>

<bean id="person" class="cohttp://m.spring.Person">
<property name="userName" value="홍길동"/>
<property name="age" value="10"/>
</bean>

</beans>

 

 

 

 

 

 

 

 

'단순 코드 기록 > Spring' 카테고리의 다른 글

Spring_@Resource  (0) 2024.02.08
Spring_Multi Config  (0) 2024.02.08
Spring_Scope  (0) 2024.02.08
Spring_map  (0) 2024.02.08
Spring_list  (0) 2024.02.08