[Spring][혼곡] 5. μ›Ή MVC 개발 - νšŒμ› μ›Ή κΈ°λŠ₯
Β·
πŸ“ Language/✏ JAVA
μ›Ή MVC 개발 1. νšŒμ› μ›Ή κΈ°λŠ₯ 1) ν™ˆ ν™”λ©΄ μΆ”κ°€ μ»¨νŠΈλ‘€λŸ¬κ°€ 정적 νŒŒμΌλ³΄λ‹€ μš°μ„ μˆœμœ„κ°€ λ†’λ‹€. 즉, μ›°μ»΄ νŽ˜μ΄μ§€(index.html)κ°€ μžˆμ–΄λ„ μ»¨νŠΈλ‘€λŸ¬κ°€ μ‘΄μž¬ν•œλ‹€λ©΄ 정적 νŽ˜μ΄μ§€λŠ” λ¬΄μ‹œλœλ‹€. package hello.hello.spring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } 2) νšŒμ› 등둝 form: 값을 μž…λ ₯ν•  수 μžˆλŠ” HTML νƒœκ·Έμ΄λ‹€. μ•„λž˜ ..
[Spring][혼곡] 4. μŠ€ν”„λ§ 빈과 μ˜μ‘΄κ΄€κ³„ - (2) 직접 μŠ€ν”„λ§ 빈 λ“±λ‘ν•˜κΈ°
Β·
πŸ“ Language/✏ JAVA
μŠ€ν”„λ§ 빈과 μ˜μ‘΄κ΄€κ³„ 2. μžλ°” μ½”λ“œλ‘œ 직접 μŠ€ν”„λ§ 빈 λ“±λ‘ν•˜κΈ° 1) κ΅¬ν˜„ μ„€μ • νŒŒμΌμ„ 톡해 μŠ€ν”„λ§ν•œν…Œ 직접 λ“±λ‘ν•˜λŠ” 방식이닀. @Service, @Repository, @Autowired μ• λ…Έν…Œμ΄μ…˜μ„ μ œκ±°ν•˜κ³  μ§„ν–‰ν•œλ‹€. ν–₯ν›„ λ©”λͺ¨λ¦¬ 리포지토리λ₯Ό λ‹€λ₯Έ λ¦¬ν¬μ§€ν† λ¦¬λ‘œ λ³€κ²½ν•  μ˜ˆμ •μ΄λ―€λ‘œ, μ»΄ν¬λ„ŒνŠΈ μŠ€μΊ” 방식 λŒ€μ‹  직접 μ„€μ •ν•  것이닀. package hello.hello.spring; import hello.hello.spring.repository.MemberRepository; import hello.hello.spring.repository.MemoryMemberRepository; import hello.hello.spring.service.MemberService; import org.springfra..
[Spring][혼곡] 4. μŠ€ν”„λ§ 빈과 μ˜μ‘΄κ΄€κ³„ - (1) μ»΄ν¬λ„ŒνŠΈ μŠ€μΊ”κ³Ό μžλ™ μ˜μ‘΄κ΄€κ³„ μ„€μ •
Β·
πŸ“ Language/✏ JAVA
μŠ€ν”„λ§ 빈과 μ˜μ‘΄κ΄€κ³„ μ§€κΈˆκΉŒμ§€ νšŒμ› μ„œλΉ„μŠ€λ₯Ό 톡해 νšŒμ› κ°€μž…κ³Ό 쑰회λ₯Ό ν•˜μ—¬ νšŒμ› 리포지토리에 μ €μž₯ν•˜κ³  λ‹€μ‹œ κΊΌλ‚Ό 수 μžˆλ„λ‘ λ‘œμ§μ„ λ§Œλ“€μ—ˆλ‹€. 이젠 웹에 보이도둝 화면에 λ„μ›Œμ•Ό ν•˜λŠ”λ°, 이 μž‘μ—…μ„ μœ„ν•΄μ„  Controller와 Viewκ°€ ν•„μš”ν•˜λ‹€. μ—¬κΈ°μ„œ νšŒμ› μ»¨νŠΈλ‘€λŸ¬λŠ” νšŒμ› μ„œλΉ„μŠ€λ₯Ό 톡해 νšŒμ› κ°€μž…κ³Ό 데이터 쑰회λ₯Ό ν•œλ‹€. μ΄λŸ¬ν•œ 관계λ₯Ό μ„œλ‘œ μ˜μ‘΄κ΄€κ³„κ°€ μžˆλ‹€κ³  ν‘œν˜„ν•˜λŠ”λ°, 즉 νšŒμ› μ»¨νŠΈλ‘€λŸ¬λŠ” νšŒμ› μ„œλΉ„μŠ€λ₯Ό μ˜μ‘΄ν•˜κ³  μžˆλ‹€. νšŒμ› μ»¨νŠΈλ‘€λŸ¬κ°€ νšŒμ› μ„œλΉ„μŠ€μ™€ νšŒμ› 리포지토리λ₯Ό μ‚¬μš©ν•  수 있게 μ˜μ‘΄κ΄€κ³„λ₯Ό μ„€μ •ν•΄λ³΄μž. μŠ€ν”„λ§ λΉˆμ„ λ“±λ‘ν•˜κ³  μ˜μ‘΄κ΄€κ³„λ₯Ό μ„€μ •ν•˜λŠ” 2κ°€μ§€ 방법 μ»΄ν¬λ„ŒνŠΈ μŠ€μΊ”κ³Ό μžλ™ μ˜μ‘΄κ΄€κ³„ μ„€μ • μžλ°” μ½”λ“œλ‘œ 직접 μŠ€ν”„λ§ 빈 λ“±λ‘ν•˜κΈ° μŠ€ν”„λ§ 빈(Spring Bean) Spring IOC μ»¨ν…Œμ΄λ„ˆκ°€ κ΄€λ¦¬ν•˜λŠ” 자..
[Spring][혼곡] 4. νšŒμ› 관리 예제 - (4) νšŒμ› μ„œλΉ„μŠ€ 개발
Β·
πŸ“ Language/✏ JAVA
νšŒμ› 관리 예제 4. νšŒμ› μ„œλΉ„μŠ€ 개발 1) νšŒμ› μ„œλΉ„μŠ€ λ§Œλ“€κΈ° service νŒ¨ν‚€μ§€ 생성 MemberService 클래슀 생성 νšŒμ› 리포지토리와 도메인을 ν™œμš©ν•˜μ—¬ μ‹€μ œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ κ΅¬ν˜„ν•  것이닀. νšŒμ› λ¦¬ν¬μ§€ν† λ¦¬λŠ” λ©”μ„œλ“œλ₯Ό 개발자 μΉœν™”μ μΈ μ΄λ¦„μœΌλ‘œ κ΅¬ν˜„ν•˜μ§€λ§Œ, νšŒμ› μ„œλΉ„μŠ€λŠ” λΉ„μ¦ˆλ‹ˆμŠ€ μΉœν™”μ μΈ μ΄λ¦„μœΌλ‘œ κ΅¬ν˜„ν•œλ‹€. package hello.hello.spring.service; import hello.hello.spring.domain.Member; import hello.hello.spring.repository.MemberRepository; import hello.hello.spring.repository.MemoryMemberRepository; import java.util.List; impo..
[C++] μŠ€μœ„ν•‘ μ•Œκ³ λ¦¬μ¦˜(Sweeping Algorithm)
Β·
πŸ“ Computer Science/✏ Algorithm
μŠ€μœ„ν•‘ μ•Œκ³ λ¦¬μ¦˜(Sweeping Algorithm)κ³΅κ°„μ΄λ‚˜ 직선 μƒμ—μ„œ ν•œμͺ½ μ‹œμž‘μ μ„ κΈ°μ€€μœΌλ‘œ λ°˜λŒ€νŽΈ μ’…λ£Œ μ§€μ κΉŒμ§€ μ§€λ‚˜κ°€λŠ”λ°, λ§ˆμ£ΌμΉ˜λŠ” μš”μ†Œλ“€μ— λŒ€ν•΄ νŒλ‹¨μ΄ λ˜λŠ” 기쀀을 μ μš©ν•΄ 정닡을 κ΅¬ν•˜λŠ” 방식이닀.즉, μ •λ ¬λœ μš”μ†Œλ“€μ„ ν•œ 번만 μˆœνšŒν•˜λ©° μ—°μ‚°ν•˜λ©΄ 정닡이 λ‚˜μ˜€κ²Œ λœλ‹€. λ¬Έμ œ https://www.acmicpc.net/problem/2261 2261번: κ°€μž₯ κ°€κΉŒμš΄ 두 점첫째 쀄에 μžμ—°μˆ˜ n(2 ≤ n ≤ 100,000)이 μ£Όμ–΄μ§„λ‹€. λ‹€μŒ n개의 μ€„μ—λŠ” μ°¨λ‘€λ‘œ 각 점의 x, yμ’Œν‘œκ°€ μ£Όμ–΄μ§„λ‹€. 각각의 μ’Œν‘œλŠ” μ ˆλŒ“κ°’μ΄ 10,000을 λ„˜μ§€ μ•ŠλŠ” μ •μˆ˜μ΄λ‹€. μ—¬λŸ¬ 점이 같은 μ’Œν‘œλ₯Ό κ°€μ§ˆ μˆ˜λ„www.acmicpc.net#include #include #include #include #include using na..
[Spring][혼곡] 4. νšŒμ› 관리 예제 - (3) ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ μž‘μ„±
Β·
πŸ“ Language/✏ JAVA
νšŒμ› 관리 예제 3. νšŒμ› 리포지토리 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ μž‘μ„± κ°œλ°œν•œ κΈ°λŠ₯을 μ‹€ν–‰ν•΄μ„œ ν…ŒμŠ€νŠΈν•  λ•Œ μžλ°”μ˜ main λ©”μ„œλ“œλ₯Ό ν†΅ν•΄μ„œ μ‹€ν–‰ν•˜κ±°λ‚˜, μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 컨트둀러λ₯Ό ν†΅ν•΄μ„œ ν•΄λ‹Ή κΈ°λŠ₯을 μ‹€ν–‰ν•œλ‹€. μ΄λŸ¬ν•œ 방법은 μ€€λΉ„ν•˜κ³  μ‹€ν–‰ν•˜λŠ”λ° 였래 걸리고, 반볡 μ‹€ν–‰ν•˜κΈ° μ–΄λ ΅κ³  μ—¬λŸ¬ ν…ŒμŠ€νŠΈλ₯Ό ν•œ λ²ˆμ— μ‹€ν–‰ν•˜κΈ° μ–΄λ ΅λ‹€λŠ” 단점이 μžˆλ‹€. μžλ°”λŠ” JUnit ν”„λ ˆμž„μ›Œν¬λ‘œ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•΄μ„œ μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•œλ‹€. ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό λ¨Όμ € μž‘μ„±ν•œ ν›„ κ°œλ°œν•˜λŠ” 방식을 ν…ŒμŠ€νŠΈ 주도 개발(TDD)이라 ν•œλ‹€. 1) ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ μž‘μ„± 보톡 ν…ŒμŠ€νŠΈν•  κΈ°λŠ₯κ³Ό λ™μΌν•œ νŒ¨ν‚€μ§€ μ΄λ¦„μœΌλ‘œ μƒμ„±ν•˜κ³  classλŠ” 뒀에 Testλ₯Ό 뢙인닀. @TestλŠ” ν…ŒμŠ€νŠΈ λ©”μ„œλ“œλΌλŠ” 뜻으둜 ν•΄λ‹Ή λ©”μ„œλ“œλ₯Ό 단독 μ‹€ν–‰μ‹œν‚¬ 수 μžˆλ‹€. ν•œ λ²ˆμ— μ—¬λŸ¬ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜λ©΄ λ©”λͺ¨λ¦¬..