๐ปProgramming/SpringBoot
-
[SpringBoot] ์ฑ๊ธํค ํจํด(singleton pattern) (feat: Spring)๐ปProgramming/SpringBoot 2024. 3. 27. 22:36
์ฑ๊ธํค ํจํด์ด๋ ๋จ ํ๋์ ์ ์ผํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ฝ๋ ํจํด์ด๋ค. ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ์ ์ํด ์ธ์คํด์ค๊ฐ ํ์ํ ๋ ๋๊ฐ์ ์ธ์คํด์ค๋ฅผ ์๋ก ๋ง๋ค์ง ์๊ณ ๊ธฐ์กด์ ์ธ์คํด์ค๋ฅผ ๊ฐ์ ธ์ ํ์ฉํ๋ ๊ธฐ๋ฒ์ ๋งํ๋ค. ์ฑ๊ธํค ํจํด์ด ์ ์ฉ๋ ๊ฐ์ฒด๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ ๊ทธ ๊ฐ์ฒด๊ฐ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฐจ์งํ๋ ์ญํ ์ ํ๋ ๋ฌด๊ฑฐ์ด ํด๋์ค์ผ ๋ ์ ํฉํ๋ค. ์ฑ๊ธํค ํจํด์ ๊ตฌํ public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance() { return instance; } private SingletonService() { } public v..
-
[SpringBoot] JPA๋?๐ปProgramming/SpringBoot 2024. 3. 20. 18:48
JPA(Java Persistence API)๋? JPA๋ Java ์ง์์์ ORM(Object-Relational Mapping) ๊ธฐ์ ํ์ค์ผ๋ก ์ฌ์ฉ๋๋ ์ธํฐํ์ด์ค์ ๋ชจ์ Hibernate, Spring JPA๋ฑ๊ณผ ๊ฐ์ ๊ตฌํ์ฒด๊ฐ ์๊ณ , ์ด๊ฒ์ ํ์ค ์ธํฐํ์ด์ค๊ฐ JPA์ด๋ค. -> JPA๋ ์ธํฐํ์ด์ค ์ค์ฒด์ ์ผ๋ก ๊ตฌํ๋ ๊ฒ์ด ์๋๋ผ ๊ตฌํ๋ ํด๋์ค์ ๋งคํํด์ฃผ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํ๋ ์์ํฌ์ด๋ค. ORM(Object-Relational Mapping)์ด๋? ์๋ฐ์ ๊ฐ์ฒด์ Relational Database(RDB)๋ฅผ ๋งคํํ๋ ๊ฒ์ผ๋ก DB์ ํน์ ํ ์ด๋ธ์ด ์๋ฐ์ ๊ฐ์ฒด๋ก ๋งคํ๋์ด SQL๋ฌธ์ ์ผ์ผ์ด ์์ฑํ์ง ์๊ณ ๊ฐ์ฒด๋ก ๊ตฌํํ ์ ์๋๋ก ํ๋ ํ๋ ์์ํฌ์ด๋ค. ๊ธฐ์ ์ ์ผ๋ก๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ฒด๋ฅผ RDB ํ ์ด๋ธ์ ์๋์ผ๋ก ์์..
-
[SpringBoot] ์คํ๋ง Bean๊ณผ ์์กด์ฑ ์ฃผ์ (Dependency Injection) feat: ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์ฑ๊ธํค ํจํด, ์ ์ด์ ์ญ์ ๐ปProgramming/SpringBoot 2024. 3. 12. 21:36
Bean ์คํ๋ง ์ปจํ ์ด๋์ ์ํด ๊ด๋ฆฌ๋๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ํํธ์จ์ด ์ปดํฌ๋ํธ(component)๋ก, ์คํ๋ง ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํ๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ๋ปํ๋ค. ์์กด์ฑ ์ฃผ์ ์ด๋? ๋ณดํต ์คํ๋ง์์๋ controller ํด๋์ค์์ ์์ฒญ์ ๋ฐ๊ณ , ํด๋น ์์ฒญ์ ๋ํ ๋น์ฆ๋์ค ๋ก์ง์ ๋ํ ์ฒ๋ฆฌ๋ service ํด๋์ค์์ ๊ตฌํํ๊ณ , ์ด ๋น์ฆ๋์ค ๋ก์ง์์ ํ์ํ ๋ฐ์ดํฐ ์ ๊ทผ์๋ repository ํด๋์ค์์ ์ฒ๋ฆฌ๋ฅผ ํ๋ค. ์ด ๊ฒฝ์ฐ controller๋ service์ ์์กดํ๊ณ , service๋ repository์ ์์กดํ๋ ํ์์ผ๋ก ์ผ๋ฐ์ ์ผ๋ก ์คํ๋ง๋ถํธ ํ๋ก์ ํธ๊ฐ ๊ตฌ์ฑ๋๋ค. ์๋ฅผ ๋ค์ด, public class MemberController { private final MemberService memberService; public..
-
[SpringBoot] ์ ์ ์ปจํ ์ธ ์ ๋์ ์ปจํ ์ธ (feat: MVC, ํ ํ๋ฆฟ ์์ง)๐ปProgramming/SpringBoot 2024. 3. 10. 18:09
์ ์ ์ปจํ ์ธ ๋? ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๊ณ , ์๋ฒ์ ๋ฏธ๋ฆฌ ์ ์ฅ๋ HTML, css, js๋ฑ์ ํ์ผ์ ๊ทธ๋๋ก ์๋ตํด ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ์๋ฏธ. ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ค์ ์์ฒญ์ ๋ํด "๋์ผํ ๊ฒฐ๊ณผ"๋ฅผ ๋ณด์ฌ์ค๋ค. ๋์ ์ปจํ ์ธ ๋? ์ด๋ค ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ , ์ด๋์, ์ด๋ป๊ฒ ์๋ฒ์ ์์ฒญํ๋์ง์ ๋ฐ๋ผ ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋ค. MVC์ ํ ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ๋ ๋ฐฉ์๊ณผ API๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๋๋๋ค. ์ ์ ์ปจํ ์ธ ๋ฅผ ์ด์ฉํ ์น ๊ฐ๋ฐ ์คํ๋ง๋ถํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ ์ปจํ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฏ๋ก '/main/resources/static/'์ ํ์์ ์ ์ ํ์ผ์ ์์ฑํ ์ ์๋ค. ์ ์ ์ปจํ ์ธ ์ ๋๋ค. ์ด ํ์ผ์ ์ด๋ฆ์ hello-static.html์ด๋ผ๊ณ ์ง์ ํ์๋ค๊ณ ๊ฐ์ ํ ๊ฒฝ์ฐ, "localhost:8080/hello-static.htm..
-
[SpringBoot] SpringBoot์์ ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๐ปProgramming/SpringBoot 2024. 3. 3. 19:15
Logging์ด๋? - ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ผ๋ จ์ ๊ธฐ๋ก์ธ ๋ก๊ทธ๋ฅผ ์์ฑํ๋๋ก ์์คํ ์ ์์ฑํ๋ ํ๋ ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ๊ธฐ์ ์์ ํ๋ถ์ ๊ฐ๋ฐ์๋ค์ Java์์ ์ค๋ฅ๋ฅผ ํ์ธํ๊ณ ์ถ์ ๋ ๋ณดํต System.out.println() ์ฌ์ฉํ๋ค. ๋๋ง ๊ทธ๋ฌ์์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง?.. System.out.println() ํ์ง๋ง ํ์ ์์๋ ๋ฌด์กฐ๊ฑด log๋ฅผ ์ด์ฉํ์ฌ ์ค๋ฅ๋ฅผ ์ถ๋ ฅํ๋ค๊ณ ํ๋ค. ๊ทธ ์ด์ ๋ ๋ฌด์์ผ๊น? 1. ์ค๋ ๋ ์ ๋ณด, ํด๋์ค ์ด๋ฆ๊ฐ์ ๋ถ๊ฐ ์ ๋ณด๋ฅผ ํจ๊ป ๋ณผ ์ ์๊ณ , ์ถ๋ ฅ ๋ชจ์์ ์กฐ์ ํ ์ ์๋ค. 2. ๋ก๊ทธ ๋ ๋ฒจ์ ๋ฐ๋ผ ๊ฐ๋ฐ ์๋ฒ์์๋ ๋ชจ๋ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๊ณ , ์ด์ ์๋ฒ์์๋ ์ถ๋ ฅํ์ง ์๋ ๋ฑ ๋ก๊ทธ๋ฅผ ์ํฉ์ ๋ง๊ฒ ์กฐ์ ํ ์ ์๋ค. 3. ์์คํ ์์ ์ฝ์์๋ง ์ถ๋ ฅํ๋ ๊ฒ์ด์๋๋ผ, ํ์ผ์ด๋ ๋คํธ์ํฌ ๋ฑ ๋ก๊ทธ๋ฅผ ๋ณ๋์ ์์น์ ๋จ๊ธธ..
-
[SpringBoot] Spring Security์์ ํน์ url ์ ์ธํ๊ณ , ์ ์ธํ๋๋ฐ ํํฐ ์ ์ฉ๋๋ ๋ฌธ์ ํด๊ฒฐ๐ปProgramming/SpringBoot 2024. 1. 12. 11:23
@Configuration @RequiredArgsConstructor @EnableWebSecurity public class SecurityConfig { private final JwtUtil jwtUtil; private final ResponseUtil responseUtil; @Bean public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception { httpSecurity .formLogin(AbstractHttpConfigurer::disable) .csrf(AbstractHttpConfigurer::disable) .sessionManagement((sessionManagement) -> ..
-
[Spring / SpringBoot] ์์กด์ฑ ์ฃผ์ ๊ณผ ์ ์ด์ ์ญ์ ๐ปProgramming/SpringBoot 2023. 10. 10. 17:36
๐ ์์กด์ฑ ์ฃผ์ (Dependency Injection) ์ด๋ค ๊ฐ์ฒด์ ๊ฐ๋ฐ์๊ฐ ์๋ "์คํ๋ง ์ปจํ ์ด๋"๊ฐ ๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ์์กด์ฑ์ ๋งบ์ด์ฃผ๋ ํ์ ํด๋์ค๊ฐ ์์กดํ๋ ๋ค๋ฅธ ํด๋์ค๋ค์ ์ธ๋ถ์์ ์ฃผ์ ์ํค๋ ๊ฒ์ด๋ค. ๐ ์์กด์ฑ ์ฃผ์ ์ ์ ์ฉํ์ง ์์ ๊ฒฝ์ฐ - Person.java public class Person { .. } - CreateRoom.java public class Room { private Person Person; public CreateRoom() { person = new Person(); } } ๐ ์ด ์ฝ๋์ ๋ฌธ์ ์ ๋ ํด๋์ค๊ฐ ๊ฐํ๊ฒ ๊ฒฐํฉ๋์ด ์๋ค. ๊ฐํ ๊ฒฐํฉ์ด๋ ์ด๋ค ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ๊ฐํ ์์กด์ฑ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ์๊ธฐํ๋ค. ์๋ฅผ ๋ค์ด A ํด๋์ค์ ๋ด๋ถ์์ B๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๋ค..
-
[Spring/SpringBoot] ํธ๋์ญ์ ์ด๋? ์คํ๋ง์ Transactional(feat: AOP)๐ปProgramming/SpringBoot 2023. 9. 25. 00:05
ํธ๋์ญ์ (Transaction)์ด๋? : DB ์ํ๋ฅผ ๋ณํ์ํค๋ ํ๋์ ๋ ผ๋ฆฌ์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ์์ ์ ๋จ์. = ์ชผ๊ฐค ์ ์๋ ์ฌ๋ฌ ์์ ๋ค์ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ต์ ๋จ์๋ก ๋ฌถ์ ๊ฒ ํธ๋์ญ์ ์ ์์ ์ํฉ ์จ๋ผ์ธ ์ผํ๋ชฐ์ ๊ฒฐ์ ํ ๋, ๋๊ฐ์ง ์์ ์ ๊ฑฐ์ณ์ผํ๋ค. 1. ํ๋งค์ฒ์ ๋์ ๋ณด๋ด๊ธฐ 2. ํ๋งค์ฒ์์ ๊ณ ๊ฐ์ด ๋ณด๋ธ ๋์ ๋ฐ๊ธฐ ์ ๋ ์์ ์ด ํ ํธ๋์ญ์ ์ด๋ผ๊ณ ํ์. ์ด ๊ฒฝ์ฐ ๊ณ ๊ฐ์ด ํ๋งค์ฒ์ ๋์ ๋ณด๋๋๋ฐ ํ๋งค์ฒ์์ ๊ณ ๊ฐ์ด ๋ณด๋ธ ๋์ ๋ฐ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋, ๊ณ ๊ฐ์ด ๋์ ๋ณด๋ด์ง ์์๋๋ฐ ํ๋งค์ฒ์์ ๋์ ๋ฐ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๋ฉด ์๋๋ค. ๋ชจ๋ ์์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์ด์ผ ์์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฉ(commit)ํ๊ณ , ํธ๋์ญ์ ์ ์ํ ๋ชจ๋ ์์ ์ค์(1๋ฒ์ด๋ 2๋ฒ ๋์ค์) ํ๋๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ ์์ ์ ์คํํ๊ธฐ ์ ์ ์ํ๋ก..