Spring

Spring [์Šคํ”„๋ง ๋นˆ๊ณผ ์˜์กด๊ด€๊ณ„ / ํšŒ์› ์„œ๋น„์Šค ์Šคํ”„๋ง๋นˆ ๋“ฑ๋ก]

2021. 6. 25. 18:56
๋ชฉ์ฐจ
  1. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์„ ์ด์šฉํ•ด์„œ ์ž๋™์ ์œผ๋กœ ์˜์กด๊ด€๊ณ„ ์„ค์ •
  2.  
  3. ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ง์ ‘ ์Šคํ”„๋ง ๋นˆ ๋“ฑ๋ก

์˜ค๋Š˜์€ ์˜์กด๊ด€๊ณ„์— ๋Œ€ํ•ด์„œ ๋ฐฐ์› ๋‹ค!

 

์–ผ๋ฅธ ๋‹ค์Œ์ฃผ ์•ˆ์— ์ง€๊ธˆ ๋“ฃ๊ณ  ์žˆ๋Š” ์ž…๋ฌธ ๊ฐ•์˜๋ฅผ ๋๋‚ด์•ผ๊ฒ ๋‹ค,,,๏ฝก๏พŸ(๏พŸยดฯ‰`๏พŸ)๏พŸ๏ฝก

 


์Šคํ”„๋ง ๋นˆ์„ ๋“ฑ๋กํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•

  • ์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์ž๋™ ์˜์กด๊ด€๊ณ„ ์„ค์ •
  • ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ง์ ‘ ๋“ฑ๋กํ•˜๊ธฐ

์Šคํ”„๋ง๋นˆ์€ ์‰ฝ๊ฒŒ๋งํ•ด์„œ ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์ด์•ผ๊ธฐ ํ•œ๋‹ค. 

 

์ปดํฌ๋„ŒํŠธ ์Šค์บ”์„ ์ด์šฉํ•ด์„œ ์ž๋™์ ์œผ๋กœ ์˜์กด๊ด€๊ณ„ ์„ค์ •

 

1. ๋ฉค๋ฒ„ ์ปจํŠธ๋กค๋Ÿฌ ์ƒ์„ฑ

package hello.hellospring.controller;

import hello.hellospring.domain.Member;
import hello.hellospring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;


@Controller
public class MemberController {

    private final MemberService memberService;

    @Autowired
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }
}

์ƒ์„ฑ์ž์— @Autowired๊ฐ€ ์žˆ๋‹ค๋ฉด ์Šคํ”„๋ง์ด ์—ฐ๊ด€๋œ ๊ฐ์ฒด๋ฅผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋„ฃ์–ด์ค€๋‹ค. 

์ฆ‰, ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋œฐ ๋•Œ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๋ฐ, ์ƒ์„ฑ์ž์˜ @Autowired๋ผ๊ณ  ์“ฐ์—ฌ์žˆ์œผ๋ฉด ๋ฉค๋ฒ„์„œ๋น„์Šค๋ฅผ ์Šคํ”„๋ง์ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ์žˆ๋Š” ๋ฉค๋ฒ„์„œ๋น„์Šค๋ฅผ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์—ฐ๊ฒฐ์‹œ์ผœ ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.  

์ด๋ ‡๊ฒŒ ๊ฐ์ฒด ์˜์กด๊ด€๊ณ„๋ฅผ ์™ธ๋ถ€์—์„œ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์„ DI(Dependency Injection)์ด๋ผ๊ณ  ํ•œ๋‹ค. 

 

2. ํšŒ์› ์„œ๋น„์Šค ์Šคํ”„๋ง๋นˆ ๋“ฑ๋ก

 

3. ํšŒ์› ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์Šคํ”„๋ง๋นˆ ๋“ฑ๋ก

 

@Autowired๊ฐ€ ๋˜์–ด์žˆ์œผ๋ฉด ์Šคํ”„๋ง์ด ๋”ฑ ์ƒ์„ฑ์„ ํ•  ๋•Œ, @service๋ฅผ ๋ณด๊ณ  ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋ก์„ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๊ณ  ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ทธ๋•Œ @Autowired๊ฐ€ ์žˆ์œผ๋ฉด ๋ฉค๋ฒ„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์„ ์•Œ์•„์ฑ„๊ณ  ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ์žˆ๋Š” ๋ฉค๋ฒ„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค. (๊ตฌํ˜„์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋ฉค๋ฒ„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ฉค๋ฒ„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์„œ๋น„์Šค์— ์ฃผ์ž…ํ•ด์ค€๋‹ค)

 

 

์Šคํ”„๋ง๋นˆ์ด ์ž˜ ๋“ฑ๋ก ๋˜์—ˆ๋‹ค๋ฉด 

 

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ


memberController   --->  memberService ---> memberRepository

์ด๋ ‡๊ฒŒ ๋ฉค๋ฒ„์„œ๋น„์Šค์™€ ๋ฉค๋ฒ„๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์Šคํ”„๋ง์ปจํ…Œ์ด๋„ˆ์— ์Šคํ”„๋ง๋นˆ์œผ๋กœ ๋“ฑ๋ก๋˜์—ˆ๋‹ค!

 

๋ฉ”์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ–ˆ์„๋•Œ ํ†ฐ์บฃ8080์ด ์ž˜ ๋œฌ๋‹ค๋ฉด ์Šคํ”„๋ง์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค ๋•Œ ๋ฌธ์ œ๊ฐ€ ์—†์ด ์ž˜ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค!

 

์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ง์ ‘ ์Šคํ”„๋ง ๋นˆ ๋“ฑ๋ก

 

** ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์Šคํ”„๋ง ๋นˆ์„ ๋“ฑ๋กํ•˜๊ธฐ ์ „์— ์ „์— ์ž‘์„ฑํ–ˆ๋˜ @Service, @Autowired, @Repository๋ฅผ ์ œ๊ฑฐํ•ด์•ผ๋œ๋‹ค. **

 

1. service์— SpringConfig ์ž๋ฐ” ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 

package hello.hellospring.service;

import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import hello.hellospring.service.MemberService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SpringConfig {

    @Bean // spring bean์„ ๋“ฑ๋กํ• ๊ฑฐ์•ผ!
    public  MemberService memberService(){
        return new MemberService(memberRepository());
    }

    @Bean
    public MemberRepository memberRepository(){
        return new MemoryMemberRepository();
    }
}

 

์•ž์„œ ํ–ˆ๋˜ ๋ฐฉ๋ฒ•๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ด๋ฒˆ ๋ฐฉ๋ฒ•์€ ๊ทธ๋ƒฅ ํ•œ ์ž๋ฐ” ํŒŒ์ผ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค!

 

๋ฉค๋ฒ„ ์„œ๋น„์Šค์™€ ๋ฉค๋ฒ„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋‘˜ ๋‹ค ์Šคํ”„๋ง ๋นˆ์— ๋“ฑ๋กํ•˜๊ณ , ์Šคํ”„๋ง๋นˆ์— ๋“ฑ๋ก๋˜์–ด์žˆ๋Š” ๋ฉค๋ฒ„๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ฉค๋ฒ„์„œ๋น„์Šค์— ๋„ฃ์–ด์ค€๋‹ค.

 

์Šคํ”„๋ง์ด ์˜ฌ๋ผ์˜ฌ ๋•Œ ๋น„์„ ๋ณด๊ณ  ์Šคํ”„๋ง๋นˆ์— ๋‘˜ ๋‹ค ์˜ฌ๋ ค์ค€๋‹ค. ๊ทธ๋Ÿฌ๋ฉด์„œ ๋ฉค๋ฒ„ ์„œ๋น„์Šค๋Š” ๋ฉค๋ฒ„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•œ๋‹ค. ๋ฉค๋ฒ„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์ „์— ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์Šคํ”„๋ง๋นˆ์— ๋ฉค๋ฒ„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

 

 

 


DI์—๋Š” ํ•„๋“œ ์ฃผ์ž…, ์ƒ์„ฑ์ž ์ฃผ์ž…, setter ์ฃผ์ž…์˜ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

- ํ•„๋“œ์ฃผ์ž…

ex)  @Autowired private MemberService memberService; ์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐ”๋กœ ์ฃผ์ž…์„ ํ•ด์ฃผ๋Š” ๊ฑด๋ฐ ๋ณ„๋กœ ์ข‹์ง€ ์•Š๋‹ค๊ณ  ํ•œ๋‹ค.

 

- ์ƒ์„ฑ์ž ์ฃผ์ž… (์ง€๊ธˆ ์“ฐ๊ณ  ์žˆ๋Š” ๋ฐฉ๋ฒ•)

 @Autowired
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }

 

- setter ์ฃผ์ž…

@Autowired
public void setMemberService (MemberService memberService){
      this.memberService = memberSevice;
}

 

setter ์ฃผ์ž…์˜ ๋‹จ์  : setter์ฃผ์ž…์€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฉค๋ฒ„ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ์ด๊ฒŒ ํผ๋ธ”๋ฆญ์œผ๋กœ ์—ด๋ ค์žˆ์–ด์•ผ๋œ๋‹ค. ๋ฉค๋ฒ„์„œ๋น„์Šค๋ฅผ ์ค‘๊ฐ„์— ๋ฐ”๊ฟ”์น˜๊ธฐ ํ•  ํ•„์š”๊ฐ€ ์—†๋Š”๋ฐ ์ด๊ฒŒ ํผ๋ธ”๋ฆญํ•˜๊ฒŒ ๋…ธ์ถœ์ด ๋œ๋‹ค. ์ด๊ฑธ ์ค‘๊ฐ„์— ๋ฐ”๊พธ๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. 

ํ•œ๋ฒˆ ์„ธํŒ…์ด ๋œ ๊ฑด ๋ฐ”๊ฟ€์ผ์ด ๊ฑฐ์˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— setter์‚ฌ์šฉ์„ ์ž˜ ํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 


spring ๊ด€๋ จ ํฌ์ŠคํŒ…์€ ๋Œ€๋ถ€๋ถ„ ์ธํ”„๋Ÿฐ์˜ ๊น€์˜ํ•œ ๊ฐ•์‚ฌ๋‹˜ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌํ•˜๋Š” ๊ธ€์ด๋‹ค!!

์ด๋ฒˆ์— ๊ฐ•์˜๊ฐ€ ๋˜ ์ƒˆ๋กœ ์˜ฌ๋ผ์™”๋‹ค. ์–ผ๋ฅธ ๊ฒฐ์ œํ•ด์•ผ์ง€!!! ๊ทธ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ ค๋ฉด ํ•œ์ฐธ ๋‚จ์•˜์ง€๋งŒ...ํ™”์ดํŒ…์ด๋‹คูฉฬ‹(หŠโ€ขอˆ ๊‡ด โ€ขอˆห‹)ูˆ 

'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

H2 DB ๋‹ค์šด๋กœ๋“œ [์„ค์น˜ / ์„œ๋ฒ„ ์‹คํ–‰]  (0) 2021.06.27
Spring [ ํšŒ์› ๋“ฑ๋ก/์กฐํšŒ/ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ/์Šคํ”„๋ง]  (0) 2021.06.25
Spring [ํšŒ์› ๊ด€๋ฆฌ / ๋ฐฑ์—”๋“œ]  (0) 2021.06.21
Spring ๊ธฐ์ดˆ๋‹ค์ง€๊ธฐ [์ •์ ์ปจํ…์ธ  / MVC / API]  (0) 2021.06.10
Spring ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์„ค์ • [ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ / ๋นŒ๋“œ ์‹คํ–‰]  (0) 2021.06.05
  1. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์„ ์ด์šฉํ•ด์„œ ์ž๋™์ ์œผ๋กœ ์˜์กด๊ด€๊ณ„ ์„ค์ •
  2.  
  3. ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ง์ ‘ ์Šคํ”„๋ง ๋นˆ ๋“ฑ๋ก
'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • H2 DB ๋‹ค์šด๋กœ๋“œ [์„ค์น˜ / ์„œ๋ฒ„ ์‹คํ–‰]
  • Spring [ ํšŒ์› ๋“ฑ๋ก/์กฐํšŒ/ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ/์Šคํ”„๋ง]
  • Spring [ํšŒ์› ๊ด€๋ฆฌ / ๋ฐฑ์—”๋“œ]
  • Spring ๊ธฐ์ดˆ๋‹ค์ง€๊ธฐ [์ •์ ์ปจํ…์ธ  / MVC / API]
DAHLIA CHOI
DAHLIA CHOI
๐ŸŒผ dali's log ๐ŸŒผDAHLIA CHOI ๋‹˜์˜ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
DAHLIA CHOI
๐ŸŒผ dali's log ๐ŸŒผ
DAHLIA CHOI
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (103)
    • Spring (42)
    • JAVA & OOP (8)
    • AWS (2)
    • DevOps (5)
    • Network (7)
    • DB (5)
    • Algorithm (9)
      • BOJ (6)
      • PROGRAMMERS (2)
      • LEETCODE (0)
    • Books (5)
    • ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… (5)
    • ํšŒ๊ณ  (0)
    • ๊ธฐํƒ€ (5)
    • FRENCH (1)
    • ํ•„์‚ฌ (2)
    • ๊ฒฝํ—˜ (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
DAHLIA CHOI
Spring [์Šคํ”„๋ง ๋นˆ๊ณผ ์˜์กด๊ด€๊ณ„ / ํšŒ์› ์„œ๋น„์Šค ์Šคํ”„๋ง๋นˆ ๋“ฑ๋ก]
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.