Skip to content

Latest commit

ย 

History

History
183 lines (132 loc) ยท 4.72 KB

File metadata and controls

183 lines (132 loc) ยท 4.72 KB

0. ์Šคํ”„๋ง ๊ฐœ์š”

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ฃผ์š”๊ธฐ๋Šฅ์œผ๋กœ 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ํŒŒ์ผ๋“ฑ์„ ์ด์šฉํ•ด์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ํ•˜๋ฉด ๋œ๋‹ค.
    • ๋ชจ๋“ˆํ™”๋˜์–ด ์ œ๊ณต๋˜๋‹ˆ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์‚ฌ์šฉํ•˜์ž ใ€ฐ๏ธ

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ (IoC -Inversion of Control)

์Šคํ”„๋ง์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์กฐ๋ฆฝํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ปจํ…Œ์ด๋„ˆ(Container)๋กœ, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๋นˆ(Bean)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

![แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2020-05-17 แ„‹แ…ฉแ„’แ…ฎ 7.39.12](/Users/gyeongseon/Desktop/แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2020-05-17 แ„‹แ…ฉแ„’แ…ฎ 7.39.12.png)

์™ธ๋ถ€์—์„œ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ๋‚ด๋ถ€ ๊ฐ์ฒด์— ํฌํ•จ์‹œ์ผœ ์˜์กด์„ฑ์„ ๋”ํ•œ๋‹ค.

์ œ์–ด์˜ ์—ญ์ „, ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐœ๋ฐœ์ž ๋Œ€์‹  ๊ฐ์ฒด์˜ ์ƒ์„ฑ๋ถ€ํ„ฐ ์†Œ๋ฉธ๊นŒ์ง€ ์ฑ…์ž„์ง„๋‹ค.

์ž๋ฐ”์—์„œ Contrainer == IoC ใ€ฐ๏ธ

3-1. DI (Dependency Injection)

๋ฐฐํ„ฐ๋ฆฌ ์ผ์ฒดํ˜• : ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ๋–จ์–ด์ง€๋ฉด ์ œํ’ˆ์„ ๋‹ค์‹œ ๊ตฌ๋งค

๋ฐฐํ„ฐ๋ฆฌ ๋ถ„๋ฆฌํ˜• : ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ๋–จ์–ด์ง€๋ฉด ๋ฐฐํ„ฐ๋ฆฌ๋งŒ ๊ต์ฒด

--> ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋žจ์˜ ์œ ์—ฐ์„ฑ

// ์ผ์ฒดํ˜• ~
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; 
  } 
}

์™ธ๋ถ€์—์„œ ์ƒ์„ฑํ•ด ์˜์กด์„ฑ์„ ๋”ํ•˜๋Š” ๊ฒƒ

3-2. ๋‹ค์–‘ํ•œ ์˜์กด ๊ฐ์ฒด ์ฃผ์ž…

  1. ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•œ ์˜์กด ๊ฐ์ฒด ์ฃผ์ž…

    public StudentResgisterService(StudentDao studentDao) {
      this.studentDao = studentDao;
    }
    ๐Ÿ‘‡๐Ÿป
    <bean id="registerService" class="ems.member.service.StudentRegisterService">
      <constructor-arg ref="studentDao" ></constructor-arg> </bean>
  2. 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>
  3. 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>
  4. 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>