์คํ๋ง ํ๋ ์์ํฌ๋ ์ฃผ์๊ธฐ๋ฅ์ผ๋ก DI, AOP, MVC, JDBC ๋ฑ์ ์ ๊ณตํ๋ค.
DI : Dependency Injection
AOP : Aspect Oriented Programming
MVC : Model-View-Controller
JDBC : Java Database Connectivity
ํ๋ ์์ํฌ? ์ ๋ฌด๋ฅผ ์ ํด๋์ ์ถ์์ ์ธ ํ
์ด์์คํด์ค์์ด ์ผ์ ์งํ VS ์์ด ์งํ์ ํฐ ์ฐจ์ด --> ๋ค๋น์์ด ์ด์ VS ๋ค๋น๊ฐ๊ณ ์ด์
| ์คํ๋ง ๋ชจ๋ | ๊ธฐ๋ฅ |
|---|---|
| spring-core | ์คํ๋ง์ ํต์ฌ์ธ DI(Dependency Injection) ์ IoC(Inversion of Control)๋ฅผ ์ ๊ณต |
| spring-aop | AOP๊ตฌํ ๊ธฐ๋ฅ ์ ๊ณต |
| spring-jdbc | ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฝ๊ฒ (์ ์ ์์ ์ฝ๋) ๋ค๋ฃฐ ์ ์๋ ๊ธฐ๋ฅ ์ ๊ณต |
| spring-tx | ์คํ๋ง์์ ์ ๊ณตํ๋ ํธ๋์ ์ ๊ด๋ จ ๊ธฐ๋ฅ ์ ๊ณต |
| spring-webmvc | ์คํ๋ง์์ ์ ๊ณตํ๋ ์ปจํธ๋กค๋ฌ(Controller)์ ๋ทฐ(View)๋ฅผ ์ด์ฉํ ์คํ๋ง MVC ๊ตฌํ ๊ธฐ๋ฅ ์ ๊ณต |
- ์คํ์ผ ํ๋ ์์ํฌ์์ ์ ๊ณตํ๊ณ ์๋ ๋ชจ๋์ ์ฌ์ฉํ๋ ค๋ฉดโ
- ๋ชจ๋์ ๋ํ ์์กด์ค์ ์ ๊ฐ๋ฐ ํ๋ก์ ํธ์ XMLํ์ผ๋ฑ์ ์ด์ฉํด์ ๊ฐ๋ฐ์๊ฐ ์ง์ ํ๋ฉด ๋๋ค.
- ๋ชจ๋ํ๋์ด ์ ๊ณต๋๋ ํ์ํ ๊ฒ๋ง ์ฌ์ฉํ์ ใฐ๏ธ
์คํ๋ง์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์กฐ๋ฆฝํ๋ ๊ฐ์ฒด๋ฅผ ์ปจํ ์ด๋(Container)๋ก, ์ปจํ ์ด๋๋ฅผ ํตํด ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๋น(Bean)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.

์ธ๋ถ์์ ์์ฑํ ๊ฐ์ฒด๋ฅผ ๋ด๋ถ ๊ฐ์ฒด์ ํฌํจ์์ผ ์์กด์ฑ์ ๋ํ๋ค.
์ ์ด์ ์ญ์ , ์ปจํ ์ด๋๋ ๊ฐ๋ฐ์ ๋์ ๊ฐ์ฒด์ ์์ฑ๋ถํฐ ์๋ฉธ๊น์ง ์ฑ ์์ง๋ค.
์๋ฐ์์ Contrainer == IoC ใฐ๏ธ
๋ฐฐํฐ๋ฆฌ ์ผ์ฒดํ : ๋ฐฐํฐ๋ฆฌ๊ฐ ๋จ์ด์ง๋ฉด ์ ํ์ ๋ค์ ๊ตฌ๋งค
๋ฐฐํฐ๋ฆฌ ๋ถ๋ฆฌํ : ๋ฐฐํฐ๋ฆฌ๊ฐ ๋จ์ด์ง๋ฉด ๋ฐฐํฐ๋ฆฌ๋ง ๊ต์ฒด
--> ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋จ์ ์ ์ฐ์ฑ
// ์ผ์ฒดํ ~
public class DI1 {
private Battery battery;
public ElectronicCarToy() {
battery = new NormalBattery();
}
}// ๋ถ๋ฆฌํ ~
public class DI2 {
private Battery battery;
public ElectronicRobotToy() {
}
public void setBattery(Battery battery) {
this.battery = battery;
}
}// ๋ถ๋ฆฌํ ~
public class ElectronicRadioToy {
private Battery battery;
public ElectronicRadioToy(Battery battery) {
this.battery = battery;
}
public void setBattery(Battery battery) {
this.battery = battery;
}
}์ธ๋ถ์์ ์์ฑํด ์์กด์ฑ์ ๋ํ๋ ๊ฒ
-
์์ฑ์๋ฅผ ์ด์ฉํ ์์กด ๊ฐ์ฒด ์ฃผ์
public StudentResgisterService(StudentDao studentDao) { this.studentDao = studentDao; } ๐๐ป <bean id="registerService" class="ems.member.service.StudentRegisterService"> <constructor-arg ref="studentDao" ></constructor-arg> </bean>
-
Setter๋ฅผ ์ด์ฉํ ์์กด ๊ฐ์ฒด ์ฃผ์
public void setJdbcUrl(String jdbcUrl) { this.jdbcUrl = jdbcUrl; } public void setUserId(String userId) { this.userId = userId; } public void setUserPw(String userPw) { this.userPw = userPw; } ๐๐ป property ์์ฑ (set ์์ ๊ณ ์๊ธ์ ์๋ฌธ์๋ก ~ ) <bean id="dataBaseConnectionInfoDev" class="ems.member.DataBaseConnectionInfo"> <property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe" /> <property name="userId" value="scott" /> <property name="userPw" value="tiger" /> </bean>
-
Listํ์ ์์กด ๊ฐ์ฒด ์ฃผ์
public void setDevelopers(List<String> developers) { this.developers = developers; } ๐๐ป <property name="developers"> <list> <value>Cheney.</value> <value>Eloy.</value> <value>Jasper.</value> <value>Dillon.</value> <value>Kian.</value> </list> </property>
-
Mapํ์ ๊ฐ์ฒด ์ฃผ์
public void setAdministrators(Map<String, String> administrators) {
this.administrators = administrators;
}
๐๐ป
<property name="administrators">
<map>
<entry>
<key>
<value>Cheney</value>
</key>
<value>cheney@springPjt.org</value>
</entry>
<entry>
<key>
<value>Jasper</value>
</key>
<value>jasper@springPjt.org</value>
</entry>
</map>
</property>