μ€νλ§ MVC 1νΈμ κ°μ λ΄μ©μ μ 리ν ν¬μ€ν μ λλ€. μΉ μλ², μΉ μ ν리μΌμ΄μ μλ² μΉ μλ² (Web Server) HTTP κΈ°λ°μΌλ‘ λμνλ©°, μ£Όλ‘ μ μ 리μμ€λ₯Ό μ 곡νλ€. Nginxλ Apacheκ° μΉ μλ²μ μνλ€. μΉ μ ν리μΌμ΄μ μλ² (WAS - Web Application Server) HTTP κΈ°λ°μΌλ‘ λμνλ©°, μΉ μλ²μ κΈ°λ₯μ ν¬ν¨ν¨κ³Ό λμμ λμ HTML, HTTP API, JSPμ κ°μ νλ‘κ·Έλ¨ μ½λλ₯Ό μ€νν΄ μ ν리μΌμ΄μ λ‘μ§μ μνν μ μλ€. Tomcatμ΄ λνμ μΌλ‘ WASμ μνλ€. μΉ μλ²μ μΉ μ ν리μΌμ΄μ μλ² μΉ μλ²λ μ μ 리μμ€λ₯Ό, μΉ μ ν리μΌμ΄μ μλ²λ μ ν리μΌμ΄μ λ‘μ§μ μ£Όλ‘ λ΄λΉνλ€κ³ νμ§λ§, μΉ μλ²λ νλ‘κ·Έλ¨μ μ€ννλ κΈ°λ₯μ ν¬ν¨νκΈ°λ νκ³ μΉ μ ν리μΌμ΄μ ..
μ€νλ§ ν΅μ¬ μ리μ κ°μ λ΄μ©μ μ 리ν ν¬μ€ν μ λλ€. λΉ μ€μ½νλ? λ§ κ·Έλλ‘ λΉμ΄ μ‘΄μ¬ν μ μλ λ²μλ₯Ό λ»νλ€. μ§κΈκΉμ§λ μ€νλ§ λΉμ΄ μ€νλ§ μ»¨ν μ΄λμ μμκ³Ό ν¨κ» μμ±λμ΄ μ€νλ§ μ»¨ν μ΄λκ° μ’ λ£λ λκΉμ§ μ μ§λλ€κ³ νμ΅νμλλ°, μ΄κ²μ μ€νλ§ λΉμ΄ κΈ°λ³Έμ μΌλ‘ μ±κΈν€ μ€μ½νλ‘ μμ±λκΈ° λλ¬Έμ΄λ€. μ€νλ§μ λ€μκ³Ό κ°μ΄ λ€μν μ€μ½νλ₯Ό μ§μνλ€. 1. μ±κΈν€: κΈ°λ³Έ μ€μ½νλ‘ μ€νλ§ μ»¨ν μ΄λμ μμκ³Ό μ’ λ£κΉμ§ μ μ§λλ κ°μ₯ λμ λ²μμ μ€μ½νμ΄λ€. 2. νλ‘ν νμ : μ€νλ§ μ»¨ν μ΄λλ νλ‘ν νμ λΉμ μμ±κ³Ό μμ‘΄ κ΄κ³ μ£Όμ , μ΄κΈ°νκΉμ§λ§ κ΄μ¬νκ³ κ·Έ μ΄μ κ΄λ¦¬νμ§ μλ 짧μ λ²μμ μ€μ½νμ΄λ€. 3. μΉ κ΄λ ¨ μ€μ½ν 3-1 request: μΉ μμ²μ΄ λ€μ΄μ€κ³ λκ° λκΉμ§ μ μ§λλ μ€μ½νμ΄λ€. 3-2 sess..
μ€νλ§ ν΅μ¬ μ리μ κ°μ λ΄μ©μ μ 리ν ν¬μ€ν μ λλ€. μμ‘΄κ΄κ³ μ£Όμ μμ μμΌ ν΅μ μ²λΌ μ ν리μΌμ΄μ μμ μ§μ μ νμν μ°κ²°μ 미리 ν΄λκ³ , μ ν리μΌμ΄μ μ’ λ£ μμ μ μ°κ²°μ λͺ¨λ μ’ λ£νλ μμ μ μ§ννλ €λ©΄ κ°μ²΄μ μ΄κΈ°νμ μ’ λ£ μμ μ΄ νμνλ€. μ€νλ§μ μ΄λ¬ν μ΄κΈ°ν/μ’ λ£ μμ μ μ΄λ»κ² μ§νν κΉ? μ€νλ§ λΉμ κΈ°λ³Έμ μΌλ‘ 'κ°μ²΄ μμ± → μμ‘΄ κ΄κ³ μ£Όμ 'μ λΌμ΄νμ¬μ΄ν΄μ κ°μ§λ€. λΉμ΄ κ°μ²΄λ₯Ό μμ±νκ³ μμ‘΄κ΄κ³ μ£Όμ μ΄ λͺ¨λ λλ μ΄νμ λ°μ΄ν°λ₯Ό μ¬μ©ν μ μλ μ€λΉκ° κ°μΆ°μ§λ κ²μ΄λ―λ‘, λ°μ΄ν° μ΄κΈ°ν μμ μ μμ‘΄ κ΄κ³ μ£Όμ μ΄ λͺ¨λ μλ£λκ³ λ λ€μμ νΈμΆν΄μΌ νλ€. μ±κΈν€ λ°©μμμ μ€νλ§ λΉμ λ€μκ³Ό κ°μ μ΄λ²€νΈ λΌμ΄νμ¬μ΄ν΄μ κ°μ§λ€. (1) μ€νλ§ μ»¨ν μ΄λ μμ± → (2) μ€νλ§ λΉ μμ± → (3) μμ‘΄ ..
μ€νλ§ ν΅μ¬ μ리μ κ°μ λ΄μ©μ μ 리ν ν¬μ€ν μ λλ€. μ‘°ν λΉμ΄ 2κ° μ΄μμΌ λ λ¬Έμ μ @Autowiredλ νμ μΌλ‘ λΉμ μ‘°ννκΈ° λλ¬Έμ, μ€μ λ‘λ λ λ§μ κΈ°λ₯μ μ 곡νμ§λ§ ac.getBean(DiscountPolicy.class)μ μ μ¬νκ² λμνλ€. μ΄λ DiscountPolicyμ νμ νμ μ΄ λ κ° μ΄μ μ‘΄μ¬ν κ²½μ° @Autowiredλ ν κ°κ° μλ μ€νλ§ λΉμΌλ‘ λ±λ‘λ νμ νμ ν΄λμ€μ κ°μλ§νΌ μ€λ³΅λ λΉμ μ°Ύκ² λκ³ , NoUniqueBeanDefinitionExceptionμ΄ λ°μνκ² λλ€. κ·Έλ λ€κ³ ν΄μ νμ νμ μΌλ‘ λΉμ μ‘°ννλ κ²μ μλμ κ°μ΄ λ κ°μ§ λ¬Έμ μ μ΄ μ‘΄μ¬νλ€. 1. DIPλ₯Ό μλ°°ν¨κ³Ό λλΆμ΄ μ½λμ μ μ°μ±μ΄ λ¨μ΄μ§λ€. 2. λΉ μ΄λ¦μ λ€λ₯΄μ§λ§ νμ μ΄ λμΌν κ²½μ° λ¬Έμ λ₯Ό..
μ€νλ§ ν΅μ¬ μ리μ κ°μ λ΄μ©μ μ 리ν ν¬μ€ν μ λλ€. μμ‘΄κ΄κ³ μ£Όμ λ°©λ² μμ±μ μ£Όμ μμ±μλ₯Ό ν΅ν΄ μμ‘΄ κ΄κ³λ₯Ό μ£Όμ λ°λ λ°©λ²μΌλ‘, μμ±μ νΈμΆ μμ μ λ± ν λ²λ§ νΈμΆλλ©° λΆλ³ νΉμ νμμ μΈ μμ‘΄ κ΄κ³ μ£Όμ μ μ¬μ©λλ€. μμ±μκ° ν κ°λ§ μμ κ²½μ° μ€νλ§ λΉμ νν΄μ @Autowiredλ₯Ό μλ΅ν΄λ μλμΌλ‘ μμ‘΄ κ΄κ³κ° μ£Όμ λλ€. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepositor..
μ€νλ§ ν΅μ¬ μ리μ κ°μ λ΄μ©μ μ 리ν ν¬μ€ν μ λλ€. μ±κΈν€ ν¨ν΄ ν΄λμ€μ μΈμ€ν΄μ€κ° 1κ°λ§ μμ±λλ κ²μ 보μ₯νλ λμμΈ ν¨ν΄μ΄λ€. μ€νλ§μ΄ μλ μμν DI(Dependency Injection) 컨ν μ΄λλ₯Ό μ΄μ©νλ€κ³ κ°μ ν΄λ³΄μ. DI 컨ν μ΄λμΈ AppConfigλ μλ‘μ΄ μμ²μ΄ λ€μ΄μ¬ λλ§λ€ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νμ¬ λ°ννλλ°, νΈλν½μ΄ μ¦κ°ν μλ‘ μμ±λλ κ°μ²΄κ° λ§μμ§μ λ°λΌ λ©λͺ¨λ¦¬ λλΉλ μ¬ν΄μ§λ€λ λ¨μ μ΄ μ‘΄μ¬νλ€. μ΄λ¬ν ν΄κ²°λ°©μμΌλ‘μ¨ κ°μ κ°μ²΄λ λ± 1κ°λ§ μμ±λλλ‘ νμ¬ κ°μ²΄λ₯Ό 곡μ νκ²λ μ€κ³νλ λ°©λ²μ μ΄μ©ν μ μλλ°, ν΄λΉ λ°©λ²μ΄ μ±κΈν€ ν¨ν΄μ μ΄μ©νλ κ²μ΄λ€. public class SingletonService { private static final SingletonService ..
μ€νλ§ ν΅μ¬ μ리μ κ°μ λ΄μ©μ μ 리ν ν¬μ€ν μ λλ€. μ€νλ§ μ»¨ν μ΄λ μμ± μλ μ½λλ μ€νλ§ μ»¨ν μ΄λλ₯Ό μμ±νλ μμ μ½λμ΄λ€. ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContextλ₯Ό μ€νλ§ μ»¨ν μ΄λλΌκ³ νλ€. μ€νλ§ μ»¨ν μ΄λλ₯Ό λ§λλ λ°©λ²μλ λνμ μΌλ‘ λ κ°μ§κ° μλ€. XML κΈ°λ° μ λ Έν μ΄μ κΈ°λ° μλ° μ€μ ν΄λμ€ μμμμ μμ μ½λκ° 2λ² λ°©λ²μ μ΄μ©ν κ²μΌλ‘, new μ°μ°μλ₯Ό ν΅ν΄ μμ±λ AnnotationConfigApplicationContextλ ApplicationContext μΈν°νμ΄μ€μ ꡬν체μ΄λ€. μλ°ν λ°μ§λ©΄ μ€νλ§ μ»¨ν μ΄λμλ ..
μ€νλ§ ν΅μ¬ μ리μ κ°μ λ΄μ©μ μ 리ν ν¬μ€ν μ λλ€. μμ μ€κ³ λΉμ¦λμ€ μꡬμ¬νκ³Ό μ€κ³ νμ νμκ°μ λ° μ‘°ν κ°λ₯ μΌλ°, VIP λ±κΈ κ΅¬λΆ νμ λ°μ΄ν°λ μ체 DBλ₯Ό ꡬμΆν μ§ μΈλΆ μμ€ν κ³Ό μ°λν μ§ λ―Ένμ μΈ μν μ£Όλ¬Έκ³Ό ν μΈ μ μ± νμμ μνμ μ£Όλ¬Έν μ μμ νμ λ±κΈμ λ°λΌ λ€λ₯Έ ν μΈ μ μ± μ μ© νμ¬ ν μΈ μ μ± μ λͺ¨λ VIP λ±κΈμ νμμκ² 1000μμ ν μΈν΄μ£Όλ κ³ μ κΈμ‘ ν μΈμ λ Όμνκ³ μμΌλ μ°¨ν λ³κ²½λ κ°λ₯μ±μ΄ λμΌλ©°, μν©μ λ°λΌ ν μΈμ μμ μ μ©νμ§ μμ μ μμ νμ λλ©μΈ μ€κ³ νμ λλ©μΈ νλ ₯ κ΄κ³ (κ°λ΅ν κ΄κ³λ) νμ ν΄λμ€ λ€μ΄μ΄κ·Έλ¨ (κ΄κ³λμ κ° μμλ₯Ό ν΄λμ€/μΈν°νμ΄μ€ν ν κ²) νμ κ°μ²΄ λ€μ΄μ΄κ·Έλ¨ (ν΄λΌμ΄μΈνΈκ° μ€μ μ΄μ© μ μμ°¨μ μΌλ‘ μ°κ²°λλ κ΄κ³λ) νμ μλΉμ€ ꡬ..