Spring
βSpringμ¬μ©νμ§ μμ DI
package spring.di;
public class Program {
public static void main(String[] args) {
Exam exam = new NewlecExam(1,2,3,4);
ExamConsole console = new GridExamConsole();
console.setExam(exam); // DI
console.print();
}
}
>>>
βββββββββββ¬ββββββββββ
β total β avg β
βββββββββββΌββββββββββ€
β 10 β 2.50 β
βββββββββββ΄ββββββββββ
springμ μ¬μ©νμ§ μκ³ exam
μ΄λΌλ dependecyλ₯Ό λ§λ€μ΄μ console
μ injectionν ν printνλ μ½λμ΄λ€.
examμ΄λΌλ κ°μ²΄κ° λ°λκ±°λ consoleμ΄ λ°λλ κ²½μ° μ μ μΈ μ½λλ‘ λ°μ λμκ² λ³΄λ€,
μ€μ νμΌλ‘ λΉΌμ μ²λ¦¬νλκ² λ°λμ§νλ€ π Springμ΄ λμμ€
βDI μ§μμ μμ±
DI μ§μμλ₯Ό μμ±νλ©΄ λΆνμ μμ±νκ³ μ‘°λ¦½(setExam
)ν΄μ λ°νν΄μ€λ€!
- μ§μμ(setting.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--Exam exam = new NewlecExam(1,2,3,4); -->
<bean id="exam" class="spring.di.entity.NewlecExam">
<!-- exam.setKor(10) -->
<!-- exam.setEng(20) -->
<!-- exam.setMath(10) -->
<!-- exam.setCom(10) -->
<property name="kor" value="10"/>
<property name="eng" value="20"/>
<property name="math" value="10"/>
<property name="com" value="10"/>
</bean>
<!--ExamConsole console = new GridExamConsole(); -->
<bean id="console" class="spring.di.ui.InlineExamConsole">
<!--console.setExam(exam); -->
<property name="exam" ref="exam"/>
</bean>
</beans>
<bean />
νκ·Έλ₯Ό μ΄μ©ν΄μ μμ±ν κ°μ²΄λ₯Ό μ§μνλ€.
<bean id="λ³μλͺ
" class="ν¨ν€μ§λͺ
(μ€λ³΅μ νΌνκΈ° μν΄μ) + κ°μ²΄ν ν ν΄λμ€λͺ
" />
injectionμ§μ λ κ°μ§ λ°©λ²
1.setter injection
<property name="" ref="" λλ value="">
λ₯Ό μ¬μ©νμ¬ setterλ₯Ό μ΄μ©ν injectionμ μ§μν μ μλ€.
μ΄λ<property>
νκ·Έ μ nameμconsole.setExam(exam)
μ setExamμμ setμ μ§μ°κ³ Examμ Eλ₯Ό μλ¬Έμλ‘ λ°κΎΌexam
μΌλ‘ μμ±ν΄μΌ νλ€.(κ·μΉ)
2.μμ±μ injection
<constructor-arg index="" value="" />
λ₯Ό μ¬μ©νμ¬ μμ±μλ₯Ό μ΄μ©ν injectionμ μ§μν μ μλ€.<!--Exam exam = new NewlecExam(10,20,40,30); --> <bean id="exam" class="spring.di.entity.NewlecExam"> <constructor-arg index="0" type="int" value="10" /> <constructor-arg index="1" type="int" value="20" /> <constructor-arg index="com" type="int" value="30" /> <constructor-arg index="math" type="int" value="40" /> </bean>
μ€μ νμΌ μ²λ¦¬κΈ°λ₯Ό setting.xmlμ μΆκ°(namespaceμμ pλ₯Ό μΆκ°)νλ©΄ μ’ λ μ½κ² ν μ μλ€.
<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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="exam" class="spring.di.entity.NewlecExam" p:kor="10" p:eng="10"/>
</beans>
βSpringμ¬μ©ν DI
package spring.di;
import org.springframework.context.ApplicationContext;
...
public class Program {
public static void main(String[] args) {
ApplicationContext context
= new ClassPathXmlApplicationContext("spring/di/setting.xml");
//ExamConsole console = (ExamConsole) context.getBean("console");
ExamConsole console = context.getBean(ExamConsole.class);
console.print();
}
}
ApplicationContext (maven projectλ‘ λ°κΏμ pom.xmlμ dependencyλ₯Ό μΆκ°ν ν importν΄μΌ νλ€) λ₯Ό μ΄μ©νμ¬ μμ±ν μ§μμλ₯Ό μ½μ΄μ¬ μ μλ€.
ApplicationContextλ μΈν°νμ΄μ€μ΄κ³ , μ¬λ¬ μ’ λ₯κ° μλ€.
- ClassPathXmlApplicationContext
- FileSystemXmlApplicationContext
- XmlWebApplicationContext
- AnnotationConfigApplicationContext
- getBeanνλ λ°©λ² λ κ°μ§
μ΄λ¦ : context.getBean("console")λ‘ κ°μ Έμ€λ©΄ ObjectνμΌλ‘ λ°νλλ―λ‘ castingμ ν΄μΌνλ€
μλ£ν : context.getBean(ExamConsole.class)λ‘ κ°μ Έμ€λ©΄ castingμ΄ νμμλ€
'πλ°±μλ : BackEnd' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Spring]@Autowiredλμλ°©μκ³Ό @Qualifier (0) | 2023.06.19 |
---|---|
[Spring]μ΄λ Έν μ΄μ μ μ΄μ©ν λ μ₯μ κ³Ό @Autowiredλ₯Ό μ΄μ©ν DI (0) | 2023.06.19 |
[Spring]μ½λ μ μμ±κ³Ό DI (0) | 2023.06.19 |
[Spring] μμ (0) | 2023.06.19 |
[Spring] DIμ IoC Container (0) | 2023.06.19 |