Framework33 Spring Boot 3.X migration ์ด์ (feat. ์คํ๋ง ์ํ๋ฆฌํฐ, JWT ๋ณ๊ฒฝ์ ) ์คํ๋ง ๋ถํธ 2 ๋ฒ์ ์ ์ฌ์ฉํ๋ค๊ฐ 3๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ฒ ๋๋ฉด ์ฌ๋ฌ๊ฐ์ง ์ด์๊ฐ ์๊ธฐ๊ฒ ๋๋ค. ํนํ๋ JDK17 ๊น์ง ์ฌ์ฉํ๊ฒ ๋๋ฉด์ ๊ธฐ์กด์ ์๋ ํจํค์ง ๊ฒฝ๋ก๋ฅผ ๋ชป ์ฐ๊ฒ ๋๋ ๊ฒฝ์ฐ๋ ๋ง๋ค. ์ฌ๋ฌ๊ฐ์ง ๋ฌธ์ ์ ์ ๋ํด์ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ๊ธฐ๋ก์ผ๋ก ๋จ๊ฒจ ๋์์ผ๊ฒ ๋ค. ๊ธฐ์กด ๋ณ๊ฒฝ ํ ์คํ๋ง ๋ถํธ ๋ฒ์ 2.7.17 3.0.11 ์๋ฐ ๋ฒ์ 8 17 JWT ๋ฒ์ 0.9.1 0.11.5 Spring Security ๋ ๋ชจ๋ 6๋ฒ์ (6:3.1.1.RELEASE) ์ ์ฌ์ฉํ์๋ค. thymeleaf์์ Spring Security๋ฅผ ์ฐ๋ ค๋ฉด springsecurity6๋ฅผ ์จ์ผ ํ๋ค. ๐ build.gradle ๋ณ๊ฒฝ ํ dependencies { implementation 'org.springframework.boot:spring-.. Framework/Spring Framework 2023. 11. 9. JPA์ Spring data JPA ์ฐจ์ด์ JPA, JPA, JPA ๋ง์ ์ฌ๋๋ค์ด ๋งํ์ง๋ง, JPA ์ Spring data JPA๋ฅผ ํผ์ฉํด์, ์ฐฉ๊ฐํด์ ์ฌ์ฉํ๋ ์ฌ๋์ด ๋ง์ ๊ฒ ๊ฐ๋ค. ๋ฌผ๋ก ๋๋ํ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. JPA๋ EntityManager ๋ฅผ ์ด์ฉํ์ฌ, EntityManager ์ ๋ฉ์๋๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ CRUD ํ๋ ๊ฑธ๋ก ์๊ณ ์์ง๋ง, ์ค์ ํ๋ก์ ํธ๋ฅผ ํด๋ณด๋ฉด EntityManager ๋ฅผ ์ฌ์ฉํ๋๊ฒ ์๋๋ผ Repository ์ธํฐํ์ด์ค๋ฅผ ์์ ๋ฐ์ ์ฌ์ฉํ๊ณ ์๋ค. ์ด์ฐธ์ JPA์ Spring data JPA ๊ฐ๋ ์ ๋ค์ก์ ๋ณด๋ ค๊ณ ํ๋ค. Framework/Spring Framework 2023. 11. 8. (23.03.03) Flask ํ๋ก๊ทธ๋๋ฐ: Java(Spring)์์ Flask์ JSON๋ฌธ์์ด ์ ๋ฌํ๊ณ ๋ฐ๊ธฐ, SQLAlchemy(Flask module) ํ์ต๋ ML ๋ชจ๋ธ์ Flask ์น์์ ์๋น์คํ๊ธฐ - Logistic Regression ํ๊ท๋ชจ๋ธ ์์ฑ ๋ฐ ํ์ต - Pickle์ ์ฌ์ฉํ ๋ชจ๋ธ์ ํ์ผ ์ ์ฅ - Flask ์น์์ ๋ชจ๋ธ์ ๋ก๋ํ์ฌ ์๋น์คํ๊ธฐ Flask์์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ค๋ฃจ๊ธฐ - Java(Spring)์์ Flask์ JSON๋ฌธ์์ด ์ ๋ฌํ๊ณ ๋ฐ๊ธฐ - SQLAlchemy(Flask module) CRUD(Oracle) ์ ์ -->ํผ--> ์๋ฐ -->json(json์ฌํ ์ด์ฉ, ํฌ์คํธ ๋ฐฉ์์ผ๋ก ๋ณด๋ด๊ธฐ)--> ํ๋ผ์คํฌ(request.get_json ๊ฐ์ฒด๋ฅผ ์จ์ ๋์ด์จ json๋ฌธ์์ด ๋ฐ๊ธฐ) Flask -->์๋ฐ๋ก json ๋ฌธ์์ด์ ๋ณด๋ผ๋ jsonify ์จ์ ๋ณด๋ธ๋ค. ์คํ ๊ฒฐ๊ณผ : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .. Framework/Flask Framework 2023. 3. 6. (23.03.02.) Flask ํ๋ก๊ทธ๋๋ฐ: ํ๋ผ์คํฌ ์น ์๋น์ค (GET,POST) ํ์ด์ฌ - ์คํ๋ง ์ฐ๋ํ๊ธฐ - Web Server : Spring(Java Web Framework) - AI Server : Flask(Python Web Framework) W/B -์์ฒญ-> Framework/Flask Framework 2023. 3. 6. (23.01.26.) React ํ๋ ์์ํฌ : ๋ฆฌ์กํธ์์ JSON ํ์ผ ๋ค๋ฃจ๊ธฐ ๋ฐ ํํฐ๊ธฐ๋ฅ ๋ฆฌ์กํธ์์ JSON ํ์ผ ๋ค๋ฃจ๊ธฐ List.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 import emps from "./emps.json"; function List() { return( ํ ์ด๋ธ์ ๋ฐ์ดํฐ ํ์ํ๊ธฐ ๋ฒํธ์ด๋ฆ์ ํ { emps.list.map((emp)=> {emp.num}{emp.name}{emp.phone} ) } ); } export default List; //emps ์ ์ด์จ ์ด๋ ์ด emp๋ ๋ฆฌ์คํธ์ ํ๋์ ์์(์ต๋ช ํจ์์ ํ๋ผ๋ฏธํฐ) Colored by Color Scripter cs 1. jsx์์ ํ ์ด๋ธ์ ํค๋์ ๋ฐ๋๊ฐ ๊ผญ์์ด์ผ ํ๋ค. 2. return๋ฌธ์ฅ ์์์๋ 1๊ฐ์ ํ๊ทธ๋ง ์ฌ์ฉํ ์ ์๋ค... Framework/React Framework 2023. 1. 28. (23.01.25)React ํ๋ ์์ํฌ : ๋ฆฌ์กํธ ๋ฐฐ์ด ๋ค๋ฃจ๊ธฐ ๋ฆฌ์กํธ ๋ฐฐ์ด ๋ค๋ฃจ๊ธฐ Component ์ ์ธ, ์ฌ์ฌ์ฉ ์์คํ ์ํํธ์จ์ด - ์ด์์ฒด์ ๋ฅผ ๋ง๋ค๊ฑฐ๋ ํ๋.... SPA(Single Page Application) - ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ฑฐ๋ ํ๋....(๋ฆฌ์กํธ๋ ์ฌ๊ธฐ์ ํด๋น) ๋น ๋ฅธ ํน์ง์ด ์๋ค. ๋ฐ์ดํฐ ๋น์ฉ ์ ๊ฐ ํด๋ฆญํ๋ฉด ์๋ฒ์ ๋ํ ์์ฒญ์ด ์๋๋ผ ์ปดํฌ๋ํธ๋ง ๋ฐ๋๊ฒ๋ ์๋ฒ์ธก ๋ฐ์ดํฐ๋ฅผ ์ฉ์ฒญํ ๋๋ ajax ์ฌ์ฉ ๋ฐฐ์ด ๋ค๋ฃจ๊ธฐ -๋ก์ปฌ์ ์ ์ธ๋ ๋ฐฐ์ด -back end ์์ ์ ๋ฌํ ๋ฐฐ์ด (๋ฆฌ์คํธ) 1 2 3 4 5 list.map(f); *f๋ list ์ ์์ ๊ฐ๊ฐ์ ๋ฐ์์ ๊ฐ๊ณตํ๊ณ ๋ค์ ๋ฐฐ์ด๋ก ๋ฆฌํด (v) => {v} list.map( (v) => {v} ) Colored by Color Scripter cs -list.map(f); /* f๋ list์ ์์ ๊ฐ.. Framework/React Framework 2023. 1. 25. (23.01.20)React ํ๋ ์์ํฌ : ๋ฒํผ ์ด๋ฒคํธ๋ฆฌ์ค๋ ๋ง๋ค๊ธฐ ๋ฒํธ์ ๋๋ฅด๋ฉด ๋์ ์ผ๋ก ์ซ์๊ฐ ์ฌ๋ผ๊ฐ๋ ์ด๋ฒคํธ ๋ง๋ค๊ธฐ ํฐ๋ฏธ๋์ ํตํด์ react-router-dom ์ค์นํ๊ธฐ App.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 import { useState } from 'react'; import { Route, Routes, Link } from 'react-router-dom'; import './App.css'; import Hello from './comp/Hello.js'; import Test from './comp/Test'; function App() { //์ํ ๋ณ์ const [num, setNum] = useState(0); //let num =0; //.. Framework/React Framework 2023. 1. 24. (23.01.19) React ํ๋ ์์ํฌ - ๋ค์ด๋ก๋ ๋ฐ ์ค์น React Framework Front-End SPA(Single Page Application) > ๋ฐ์ดํฐ ๋น์ฉ์ ๊ฐ, ๋ฐ์์๋ ํฅ์ ๋ฐ๋ณต ์ฌ์ฉ๋๋ ํ์ด์ง์ ์ผ๋ถ๋ถ์ ๋ชจ๋คํ(์ปดํฌํดํธ)ํ์ฌ ์ฌ์ฌ์ฉ > ๊ฐ๋ฐ์๊ฐ ๋จ์ธก, ์ ์ง๋ณด์์ ํจ์จ์ฑ ํฅ์jQuery๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ฉด์ ๋ถ๋ถ๋ถ๋ถ์ ๋ฐ๊ฟ ๋๋ง๋ค ํ๊ทธ๋ฅผ ํ๋ํ๋ ๋ค ๋ฃ์ด์ค์ผํ๋๋ฐ react๋ฅผ ์ฐ๋ฉด ๋ง๋ ํ ์ปดํฌ๋ํธ๋ฅผ ๋ผ์ ๋ฃ์ ์ ์๋ค. html, css, javascript ๊ฐ๋ฐ ํธ์๋ฅผ ์ํด Nodejs ๊ธฐ๋ฐ ๊ฐ๋ฐํ๊ฒฝ ์ฌ์ฉ Node.js: Server side Javascript JSX ์คํฌ๋ฆฝํธ : Javascript + XML - ํ๋ก์ ํธ ์์ฑ์ ๋ก์ปฌ ์น์๋ฒ๋ ๋ด์ฅ(ํฌํธ 3000) ๊ฐ๋ฐ์๋ฃ > Build > ์นํ์ค ํ์ผ ์์ฑ > ๊ฐ๋ฐํ๊ฒฝ ์ด์ธ์์ ์ฌ์ฉ JSP.. Framework/React Framework 2023. 1. 24. (23.01.18)Spring ํ๋ ์์ํฌ + Thymeleaf ๋ก FullCalendar ์ด๋ฏธ์ง ๋ํ๋ด๊ธฐ ๋ฐ ์ด๋ฒคํธ ์จํด๋ฆญ(onClick)์ฒ๋ฆฌํ๊ธฐ Spring + Thymeleaf ๋ก FullCalendar ์ด๋ฏธ์ง ๋ํ๋ด๊ธฐ ๋ฐ ์ด๋ฒคํธ ์จํด๋ฆญ(onClick)์ฒ๋ฆฌํ๊ธฐ ๋ฌ๋ ฅ์ ๋ทฐ๋ก ๋์ธ ๋ ๋ง์ด ์ฐ๋ ๋ฌ๋ ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค. ๋ฐ๋ก fullcalendar์ธ๋ฐ ์๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ๋ฌ๋ ฅ์ ๋ง๋๋ ๊ฒ์ด๋ค. fullcalendar์ ์ผ์ ์ ๋ํ๋ด๋ ๋ฌ๋ ฅ์ ์นํ์ ์ธ๋ฐ ์ด๋ฅผ ์กฐ๊ธ ์์ฉํ์ฌ ์ผ๊ธฐ ๋ฌ๋ ฅ์ผ๋ก ๋ง๋ค์๋ค. ์ผ๊ธฐ๋ฅผ ์ฐ๋ฉด ํด๋น ๋ ์ง์ ํ๋กํ ์ฌ์ง์ด ๋จ๊ณ ํ๋กํ์ ๋๋ฅด๋ฉด ์ผ๊ธฐ ์์ธ ํ์ด์ง๋ก ๋์ด๊ฐ๊ฒ ๋ง๋ค์๋ค. https://fullcalendar.io/ FullCalendar - JavaScript Event Calendar Open Source... With over 10 years of open source and over 120 contributors,.. Framework/Spring Framework 2023. 1. 23. (23.01.17.)Spring ํ๋ ์์ํฌ : AOP(Aspect Oriented Programming) ๊ด๊ณ์งํฅ ํ๋ก๊ทธ๋๋ฐ AOP(Aspect Oriented Programming) ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ Core Concerns : ๋ฉ์ธ ๋ก์ง Cross-Cutting Concerns : ๋ถ๊ฐ์ ์ธ ๋ก์ง(๋ก๊ทธ์ธ ๊ฒ์ฌ, ๋ณด์, ๋ก๊น ….) ๋ฐ๋ณต๋๋ ๋ถ๊ฐ ๋ก์ง์ ์ฌ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ(๋ถ๊ฐ๋ก์ง ์ค๋ณต๋ฐฉ์ง) OOP(Object Oriented Progrramming) ๋ฐฉ์์ผ๋ก๋ ์๋จ AOP ๋ฐฉ์์ ์ฌ์ฉํ์ฌ OOP๋ฅผ ๋ณด์ํ ์ ์์ Adivce : ๋ถ๊ฐ์ ์ธ ๋ก์ง์ ๋ฉ์๋๋ก ์ ์ธํ ๊ฒ Pointcut : ๋ถ๊ฐ๋ก์ง์ธ ์คํ๋ ๋ฉ์ธ ๋ก์ง์ ์์ ํ ๊ฒฝ๋ก ํํ Aspect : ๋ถ๊ฐ๋ก์ง์ ๋ฉ์๋๋ก ์ ์ธํ ํด๋์ค JoinPoint : ๋ถ๊ฐ๋ก์ง์ ์ด์ด์ ์คํ๋ ์ฃผ ๋ก์ง์ ๋ฉ์๋ ์ ๋ณด @Before, @After, @Around, @AfterReturning.. Framework/Spring Framework 2023. 1. 18. (23.01.16.)Spring ํ๋ ์์ํฌ : ์ด๋ฉ์ผ ์ธ์ฆ ๋ณด์ - ๋ค๋ฅธ ๊ธฐ๊ธฐ์์ ์ธ์ฆ์ ์ธ์ ์ด ๋ฌ๋ผ ์ธ์ฆ ์ค๋ฅ ๊ณ ์น๊ธฐ ์ด๋ฉ์ผ ์ธ์ฆ ๋ณด์ -์ธ์ฆ์ ์ ์ฒญํ ๊ธฐ๊ธฐ ์ด์ธ์ ๊ธฐ๊ธฐ์์๋ ์ธ์ฆ ๋ต๋ณ ๋ฉ์ผ ํ์ธ -์ด๋ฉ์ผ์ ์ธ์ฆ์ฉ ์ํธ ๋ฌธ์์ด์ ์ ๋ฌ -์ด๋ฉ์ผ ์์ ์๊ฐ ๋ฉ์ผ์ ์ด๊ณ ๋งํฌ ํด๋ฆญ > ์ํธ๋ฌธ์์ด์ ๋ค์ ์๋ฒ๋ก ๋ณด๋ด์ค๋ค. -์ด๋ฉ์ผ์ ๋ณด๋ผ๋์ ์๋ฒ์ธก ๋ฉ์๋์ ์ํธ๋ฌธ์์ด์ ๋ค์ ๋ฐ์ ๋์ ๋ฉ์๋๋ ๋ค๋ฅด๋ค. -์ด์ฉ์์ ์ธ์ ์ ์ํธ๋ฌธ์์ด์ ๊ธฐ์ต์์ผ๋๊ณ ๋์์์ ๋์ ์ํธ ๋ฌธ์์ด์ ๋น๊ตํ๋ค. -์์ ์ ์ฐจ๊ฐ ๋ชจ๋ ๋์ผ ์์คํ ์์ ์คํ๋๋ค๋ฉด ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์๋ค. -ํ์ง๋ง ๋ค๋ฅธ ๊ธฐ๊ธฐ์์ ์ธ์ฆ์ ์๋ต์ ๋๋ฅด๋ฉด ์ธ์ ์ด ๋ค๋ฅธ ์ธ์ ์ผ๋ก ๋ฐ๋๊ธฐ ๋๋ฌธ์ ์ธ์ฆ์ด ์๋ํ์ง ์๋๋ค. ๋ฐ๋ผ์ ์ธ์ฆ ๋งํฌ๋ฅผ ๋๋ฅผ ๋ ์ธ์ id๊น์ง ๊ฐ์ด ์ค์ ํด๋น ์ธ์ id์ ์๋ ๋ฌธ์์ด๊ณผ ํจ๊ป ๋น๊ตํ๊ฒ๋ ํด์ผํ๋ค. ๋จผ์ ๋ฉ์ธ ์ดํ๋ฆฌ์ผ์ด์ ์ @ServletComponentScan์.. Framework/Spring Framework 2023. 1. 18. (23.01.14.)Spring ํ๋ ์ ์ํฌ : ์๋ฌ ํ์ด์ง ๋ง๋ค๊ธฐ ์๋ฌ๊ฐ ๋จ๊ฒ ๋๋ฉด ์น์ ์ ๋ชจ๋ฅด๋ ์ด์ฉ์๋ ๋นํฉํ ์ ์๋ค. ๋ฐ๋ผ์ ์๋ฌ์ ์ข ๋ฅ์ ๋ฐ๋ผ ๊ฐ๋ฐ์๊ฐ ์๋ฌํ์ด์ง๋ฅผ ๊พธ๋ฉฐ์ ์ด์ฉ์์๊ฒ ์ ์ค๋ช ํ ์ ์๋ค. ErrorHandler.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 import javax.servlet.RequestDispatcher; import javax.servlet.http.HttpServletRequest; import org.springframework.boot.web.servlet.error.ErrorController; import org.springframework.http.HttpStatus; i.. Framework/Spring Framework 2023. 1. 17. ์ด์ 1 2 3 ๋ค์