Spring
@Autowired๋ ์๋ฃํ์ ๊ธฐ์ค์ผ๋ก ์ฐพ๋๋ค
<?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:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
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
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">
<context:annotation-config/>
<bean class="spring.di.entity.NewlecExam" p:kor="10" p:eng="10" />
<bean id="console" class="spring.di.ui.InlineExamConsole">
</bean>
</beans>
Exam๊ฐ์ฒด๋ฅผ ์์ฑํ๋ <bean>
์ id="exam"
์ ์ง์ ๋ค.
์คํํ๋ฉด ์ฑ๊ณต์ ์ผ๋ก ์๋ํ๋ค.
๐ @Autowired
๋ ์๋ฃํ์ ๊ธฐ์ค์ผ๋ก ์ฐ๊ฒฐํ๋ค(๊ธฐ๋ณธ๋์)
๋ณ์๋ช
์ ๊ธฐ์ค์ผ๋ก ์ฐ๊ฒฐํ๊ธฐ๋ ํจ (๋ฐ์ ๋์ด)
@Qualifier
public class InlineExamConsole implements ExamConsole {
private Exam exam;
...
@Autowired
@Qualifier("exam1")
@Override
public void setExam(Exam exam) {
this.exam = exam;
}
}
@Qualifier
๋ฅผ ์ฌ์ฉํ์ฌ exam1์ Autowiredํ๋๋ก ์ค์ ํ๋ค.
<?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:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
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
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">
<context:annotation-config/>
<bean id="exam1" class="spring.di.entity.NewlecExam" p:kor="10" p:eng="10" />
<bean id="exam2" class="spring.di.entity.NewlecExam" p:kor="20" p:eng="20"/>
<bean id="console" class="spring.di.ui.InlineExamConsole">
<!-- <property name="exam" ref="exam"/> -->
</bean>
</beans>
exam๊ฐ์ฒด exam1๊ณผ exam2๊ฐ ๋ ๊ฐ ์๋ค.
๊ทธ๋ฅ @Autowired
๋ฅผ ์ฌ์ฉํ๋ฉด error๊ฐ ๋ฐ์ํ๋ค!
๐ @Qualifier
๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ค ๊ฐ์ฒด๋ฅผ Autowiredํ ์ง ์์ฑํด์ผ ํ๋ค!
โจ ์ ๋ฆฌ : @Autowired
๋ ์๋ฃํ์ ๊ธฐ๋ณธ์ผ๋ก DIํ์ง๋ง, ์๋ณ์ด ๋ชจํธํ ๊ฒฝ์ฐ ๋ณ์๋ช
์ ์ฌ์ฉํ๋ค.
์ด๋ @Qualifier
๋ฅผ ์ด์ฉํ์ฌ ๋ณ์๋ช
์ ์ง์ ํด์ค์ผ ํ๋ค.
'๐๋ฐฑ์๋ : BackEnd' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] @Autowired์ ์์น์ Required์ต์ (0) | 2023.06.19 |
---|---|
[Spring] <context : annotation-config> vs <context : component-scan> (0) | 2023.06.19 |
[Spring]์ด๋ ธํ ์ด์ ์ ์ด์ฉํ ๋ ์ฅ์ ๊ณผ @Autowired๋ฅผ ์ด์ฉํ DI (0) | 2023.06.19 |
[Spring]์ฝ๋ ์ ์์ฑ๊ณผ DI (0) | 2023.06.19 |
[Spring]DI ์ง์์ (0) | 2023.06.19 |