Spring/Spring ๊ธฐ๋ณธ
IoC, DI, ๊ทธ๋ฆฌ๊ณ ์ปจํ
์ด๋ ์ ์ด์ ์ญ์ IoC(Inversion of Control) ํ๋ก๊ทธ๋จ์ ์ ์ด ํ๋ฆ์ ์ง์ ์ ์ดํ๋ ๊ฒ์ด ์๋๋ผ ์ธ๋ถ์์ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ ์ด์ ์ญ์ (IoC)์ด๋ผ ํ๋ค. public class MemberServiceImpl implements MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); ๊ธฐ์กด ํ๋ก๊ทธ๋จ์ ํด๋ผ์ด์ธํธ ๊ตฌํ ๊ฐ์ฒด๊ฐ ์ค์ค๋ก ํ์ํ ์๋ฒ ๊ตฌํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์ฐ๊ฒฐํ๊ณ , ์คํํ๋ค. ๋ฐ๋ฉด์ AppConfig๊ฐ ๋ฑ์ฅํ ์ดํ์ ๊ตฌํ ๊ฐ์ฒด๋ ์์ ์ ๋ก์ง์ ์คํํ๋ ์ญํ ๋ง ๋ด๋นํ๋ค. public class AppConfig { public MemberR..
Spring/Spring ๊ธฐ๋ณธ
๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ์ ์ ํ๋ฆฌ์ผ์ด์
์ ํ๋์ ๊ณต์ฐ์ด๋ผ ์๊ฐํด๋ณด์. ๊ฐ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ๋ฐฐ์ญ(๋ฐฐ์ฐ ์ญํ )์ด๋ผ ์๊ฐํ์. ๊ทธ๋ฐ๋ฐ! ์ค์ ๋ฐฐ์ญ ๋ง๋ ๋ฐฐ์ฐ๋ฅผ ์ ํํ๋ ๊ฒ์ ๋๊ฐ ํ๋๊ฐ? ๋ก๋ฏธ์ค์ ์ค๋ฆฌ์ฃ ๊ณต์ฐ์ ํ๋ฉด ๋ก๋ฏธ์ค ์ญํ ์ ๋๊ฐ ํ ์ง ์ค๋ฆฌ์ฃ ์ญํ ์ ๋๊ฐ ํ ์ง๋ ๋ฐฐ์ฐ๋ค์ด ์ ํ๋๊ฒ ์๋๋ค. public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository = new MemoryMemberRepository(); // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy di..
Spring/Spring ๊ธฐ๋ณธ
์๋ก์ด ํ ์ธ ์ ์ฑ
์ ํ์ฅํด๋ณด์. ๊ฐ์๋ฅผ ๋ณด๊ธฐ์ ์ ์ค์ค๋ก ์๋ก์ด ํ ์ธ ์ ์ฑ
( ์ ๋ฅ ํ ์ธ ) ์ผ๋ก ๋ณ๊ฒฝํ๋ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด์๋ค. 1. RateDiscountPolicy ํด๋์ค๋ฅผ ์์ฑํ๊ณ (๊ตฌํ์ฒด ์์ฑ) ์ด๊ฒ์ DiscountPolicy Interface(์ญํ ) ๋ฅผ implements ํ๋ค 2. RateDiscountPolicy ๊ตฌํ์ฒด์ ๋ฉ์๋๋ฅผ ์์ฑํด๋ณด์ ( ์ค๋ฒ๋ผ์ด๋ฉ ) ์ฝ๋ ๋๋ณด๊ธฐ package hello2.demo.discount; import hello2.demo.member.Grade; import hello2.demo.member.Member; public class RateDiscountPolicy implements DiscountPolicy { private double DiscountRat..
Spring/Spring ๊ธฐ๋ณธ
์ฃผ๋ฌธ๊ณผ ํ ์ธ ๋๋ฉ์ธ ์ค๊ณ ์ฃผ๋ฌธ๊ณผ ํ ์ธ ์ ์ฑ
ํ์์ ์ํ์ ์ฃผ๋ฌธํ ์ ์๋ค. ํ์ ๋ฑ๊ธ์ ๋ฐ๋ผ ํ ์ธ ์ ์ฑ
์ ์ ์ฉํ ์ ์๋ค. ํ ์ธ ์ ์ฑ
์ ๋ชจ๋ VIP๋ 1000์์ ํ ์ธํด์ฃผ๋ ๊ณ ์ ๊ธ์ก ํ ์ธ์ ์ ์ฉํด๋ฌ๋ผ. (๋์ค์ ๋ณ๊ฒฝ ๋ ์ ์๋ค.) ํ ์ธ ์ ์ฑ
์ ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ํ์ฌ์ ๊ธฐ๋ณธ ํ ์ธ ์ ์ฑ
์ ์์ง ์ ํ์ง ๋ชปํ๊ณ , ์คํ ์ง์ ๊น์ง ๊ณ ๋ฏผ์ ๋ฏธ๋ฃจ๊ณ ์ถ๋ค. ์ต์
์ ๊ฒฝ์ฐ ํ ์ธ์ ์ ์ฉํ์ง ์์ ์ ๋ ์๋ค. (๋ฏธํ์ ) ์ฃผ๋ฌธ ๋๋ฉ์ธ ํ๋ ฅ, ์ญํ , ์ฑ
์ 1. ์ฃผ๋ฌธ ์์ฑ: ํด๋ผ์ด์ธํธ๋ ์ฃผ๋ฌธ ์๋น์ค์ ์ฃผ๋ฌธ ์์ฑ์ ์์ฒญํ๋ค. 2. ํ์ ์กฐํ: ํ ์ธ์ ์ํด์๋ ํ์ ๋ฑ๊ธ์ด ํ์ํ๋ค. ๊ทธ๋์ ์ฃผ๋ฌธ ์๋น์ค๋ ํ์ ์ ์ฅ์์์ ํ์์ ์กฐํํ๋ค. 3. ํ ์ธ ์ ์ฉ: ์ฃผ๋ฌธ ์๋น์ค๋ ํ์ ๋ฑ๊ธ์ ๋ฐ๋ฅธ ํ ์ธ ์ฌ๋ถ๋ฅผ ํ ์ธ ์ ์ฑ
์ ์์ํ๋ค. 4...
Spring/Spring ๊ธฐ๋ณธ
ํ์ ๋๋ฉ์ธ ์คํ๊ณผ ํ
์คํธ ํ์ ๋๋ฉ์ธ - ํ์ ๊ฐ์
main ๋๋ณด๊ธฐ package hello2.demo; import hello2.demo.member.Grade; import hello2.demo.member.Member; import hello2.demo.member.MemberService; import hello2.demo.member.MemberServiceImpl; public class MemberApp { public static void main(String[] args) { MemberService memberService = new MemberServiceImpl(); Member member = new Member(1L, "memberA", Grade.VIP); memberServ..
Spring/Spring ๊ธฐ๋ณธ
ํ์ ๋๋ฉ์ธ ๊ฐ๋ฐ ํ์ ๋ฑ๊ธ (Grade.class) ๋๋ณด๊ธฐ package hello2.demo.member; public enum Grade { BASIC, VIP } ํ์ ์ํฐํฐ, ๋ฉค๋ฒ (Member) ๋๋ณด๊ธฐ id, ์ด๋ฆ, ๋ฑ๊ธ package hello2.demo.member; public class Member { private Long id; private String name; private Grade grade; public Member(Long id, String name, Grade grade) { this.id = id; this.name = name; this.grade = grade; } public Long getId() { return id; } public void setId(L..
Spring/Spring ๊ธฐ๋ณธ
์น์
2. ์คํ๋ง ํต์ฌ ์๋ฆฌ ์ดํด 1 - ์์ ๋ง๋ค๊ธฐ ํ๋ก์ ํธ ์์ฑ https://endyd1567.tistory.com/98 ์คํ๋ง ์
๋ฌธ - (1) ํ๋ก์ ํธ ์์ฑ start.spring.io ์ด๊ธฐ ์ค์ ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋น๊ฒจ์ ์ธ ๊ฒ์ธ๊ฐ Spring Web : ์น ํ๋ก์ ํธ Thymeleaf : HTML์ ๋ง๋ค์ด์ฃผ๋ ํฌํ๋ฆฟ ์์ง ์ค์น ํ buuld.gradle ํ์ผ Open main / test ๋๋ ์ ธ ์์ resources : xml ,html , ์ค endyd1567.tistory.com ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ๊ณผ ์ค๊ณ ํ์ ํ์์ ๊ฐ์
ํ๊ณ ์กฐํํ ์ ์๋ค. ํ์์ ์ผ๋ฐ๊ณผ VIP ๋ ๊ฐ์ง ๋ฑ๊ธ์ด ์๋ค. ํ์ ๋ฐ์ดํฐ๋ ์์ฒด DB๋ฅผ ๊ตฌ์ถํ ์ ์๊ณ , ์ธ๋ถ ์์คํ
๊ณผ ์ฐ๋ํ ์ ์๋ค. (๋ฏธํ์ ) ์ฃผ๋ฌธ๊ณผ ํ ์ธ ์ ์ฑ
..
Spring/Spring ๊ธฐ๋ณธ
์
๋ ๋ฉด์ ๊ด์๊ฒ ๊ฑธ๋ฆฌ๋ฉด ๋ฌผ์ด๋ณผ ์๋ ์๋ค๋ ์ข์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ 5๊ฐ์ง ์์น SOLID๋ฅผ ์์๋ณด์... SRP ๋จ์ผ ์ฑ
์ ์์น ( single responsibilty principle ) - ํ ํด๋์ค๋ ํ๋์ ์ฑ
์๋ง ๊ฐ์ ธ์ผ ํ๋ค. - ํ๋์ ์ฑ
์์ด๋ผ๋ ๊ฒ์ ๋ชจํธํ๋ค. ํด ์ ์๊ณ , ์์ ์ ์๋ค. ๋ฌธ๋งฅ๊ณผ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค. - ์ค์ํ ๊ธฐ์ค์ ๋ณ๊ฒฝ์ด๋ค. ๋ณ๊ฒฝ์ด ์์ ๋ ํ๊ธ ํจ๊ณผ๊ฐ ์ ์ผ๋ฉด ๋จ์ผ ์ฑ
์ ์์น์ ์ ๋ฐ๋ฅธ ๊ฒ์ด๋ค. OCP ๊ฐ๋ฐฉ-ํ์ ์์น ( open/closed principle ) - ์ํํธ์จ์ด ์์๋ ํ์ฅ์๋ ์ด๋ ค์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ์์ด์ผ ํ๋ค. " ์ด๋ป๊ฒ ์ฝ๋์ ๋ณ๊ฒฝ ์์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์๊น? " - ๋คํ์ฑ์ ํ์ฉํด ๋ณด์ - ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์๋ก์ด ํด๋์ค๋ฅผ ํ๋ ๋ง๋ค์ด์(๊ธฐ์กด..