๐ Spring
Spring H2 inmemory DB ์ฌ์ฉํ๋ ๋ฒ Spring boot์์ h2 ์ธ๋ฉ๋ชจ๋ฆฌ DB ์ฌ์ฉํ๋ ๋ฒ์ ์์๋ณด์. ์์กด์ฑ ์ถ๊ฐ com.h2database h2 runtime application.yml ์ค์ spring: h2: console: enabled: true path: /h2-console #(default ์ค์ ์ํด๋ ์๋์ ์ฉ) datasource: url: jdbc:h2:mem:todoItem ์ด์ http://localhost:8080/h2-console ๋ก ์ ์ํ๊ฒ ๋๋ฉด, h2 ์ฝ์์ ๋ณผ ์ ์๋ค. saved setting: Generic H2 (Embedded) JDBC URL: jdbc:h2:mem:todoItem ๋น์ฐํ ์ธ๋ฉ๋ชจ๋ฆฌ ์ด๊ธฐ ๋๋ฌธ์ ํ๋ก์ ํธ๊ฐ ์ข
๋ฃ๋๋ฉด, ๋ด๋ถ ๋ฐ์ดํฐ๋..
๐ Spring/Spring in Action
Goal ์คํ๋ง JdbcTemplate ์ฌ์ฉํด๋ณด๊ธฐ SimpleJdbcInsert๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ ์ถ๊ฐํด๋ณด๊ธฐ ์คํ๋ง ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด์ JPA ์ ์ธํ๊ณ ์ฌ์ฉํด๋ณด๊ธฐ ์์ JDBC Jdbc๋, Java DataBase Connectivity, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํ API์ด๋ค. Jdbc๋ฅผ ์ด์ฉํด select ์ฟผ๋ฆฌ ์์ฑํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค. @Override public Account findById(String id) { Connection conn = null; PreparedStatement st = null; ResultSet rs = null; String sql = "select id, name from Account where id = ?"; try { conn = datasource.getCo..
๐ Spring
์์กด์ฑ ์ํ ์ฐธ์กฐ ์ํ ์ฐธ์กฐ ์๋ฌ๋ ๋ ์ด์์ Bean์ด ์์ฑ์๋ฅผ ํตํด ๋น์ ์ฃผ์
๋ฐ์ผ๋ ค๊ณ ํ ๋ ์๊ธด๋ค. securityConfig์ ์๋ TokenProvider๊ฐ AccountService ๋น์ ์ฃผ์
๋ฐ๊ฒ ๋๊ณ , ๋ AccountService์์๋ SecurityConfig.passwordEncoder๋ฅผ ์ฐธ์กฐํ๊ณ ์์ด์ ๊ณ์ ์ํ ์ฐธ์กฐ๊ฐ ์ผ์ด๋๊ฒ ๋๋ ๊ฒ์ด๋ค. ๊ทผ๋ฐ ์ด ๊ฒฝ์ฐ์๋ SecurityConfig -> TokenProvider -> AccountService ์์ผ๋ก ์ฐธ์กฐํ์ง๋ง, TokenProvider๋ InitializingBean์ implements ํ๊ณ ์๊ธฐ ๋๋ฌธ์ AccountService๊ฐ ์์ง ์์ ์ํฉ์์ AccountService๋ฅผ ์ฃผ์
๋ฐ์ผ๋ ค๊ณ ํ๋ค๋ณด๋ ์ค๋ฅ๊ฐ ์๊ธฐ๋ ๊ฒ ๊ฐ์๋ค...
๐ Spring/Spring Security
์ด ํฌ์คํธ๋ ๋ฐ์ด ํ๋ก๊ทธ๋๋ฐ๋์ ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋์ ์ ๋ฆฌํ ๊ธ์
๋๋ค. ๋ก๊ทธ์ธ ์์ฒญ์ด ์ค๋ฉด ์ฌ์ฉ์ ์ธ์ฆ ํ JWT ํ ํฐ์ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํด์คฌ์ต๋๋ค. ์ด์ ์ฌ์ฉ์๋ ๋งค๋ฒ ๋ก๊ทธ์ธ์ ํ๋ ๊ฒ์ด ์๋๋ผ, ์ด์ ์ ๋ฐ๊ธ ๋ฐ์ JWT ํ ํฐ์ ๋ค๊ณ ์๋ฒ๋ก ์์ฒญ์ ํ๋ฉด ์๋ฒ๋ ํด๋น JWT ํ ํฐ์ ๊ฒ์ฆํ์ฌ ์ ํจํ ํ ํฐ์ธ์ง ํ์ธ ํ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํด์ฃผ๋ฉด ๋ฉ๋๋ค. ์ด๋ฒ ์๊ฐ์๋ JWT ํ ํฐ์ ๊ฒ์ฆํ ์ ์๋ Filter๋ฅผ ์์ฑํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. BasicAuthenticationFilter ์์ ํค๋์ Authorization : Basic *** ๋ฐฉ์์ผ๋ก ์ธ์ฆ์ ์๋ํ๋ฉด BasicAuthenticationFilter์์ ํด๋น ํ ํฐ์ ๊ฒ์ฆํ์ฌ ์ธ์ฆ์ ์ฒ๋ฆฌํ๋๋ฐ, ์ฐ๋ฆฌ๋ Basic ๋ฐฉ์์ด ์๋, JWT..
๐ Spring/Spring Security
์ด ํฌ์คํธ๋ ๋ฐ์ด ํ๋ก๊ทธ๋๋ฐ๋์ ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋์ ์ ๋ฆฌํ ๊ธ์
๋๋ค. UsernamePasswordAuthenticationFilter์ ๋ํด์๋ ์๋ ํฌ์คํ
์ ์ฐธ์กฐํ์๊ธธ ๋ฐ๋๋๋ค. UsernamePasswordAuthenticationFilter ๋์ ๋ฐฉ์์ ๋ํด์ SpringSecurity Filterchain ์๋ ์ฌ๋ฌ ์ข
๋ฅ์ ํํฐ๊ฐ ์กด์ฌํ์ง๋ง, ์ด๋ฒ ์๊ฐ์๋ ๋ก๊ทธ์ธ ์ธ์ฆ์ ์ฒ๋ฆฌํ๋ UsernamePasswordAuthenticationFilter์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. Login ์ธ์ฆ ๋ก์ง flow POST "/login".. iseunghan.tistory.com ๋ก๊ทธ์ธ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ SpringSecurityFilterChain ์ค์ ๋ก๊ทธ์ธ ์ธ์ฆ์ ์ฒ๋ฆฌํ๋ ํํฐ์ธ Userna..
๐ Spring/Spring Security
SpringSecurity Filterchain ์๋ ์ฌ๋ฌ ์ข
๋ฅ์ ํํฐ๊ฐ ์กด์ฌํ์ง๋ง, ์ด๋ฒ ์๊ฐ์๋ ๋ก๊ทธ์ธ ์ธ์ฆ์ ์ฒ๋ฆฌํ๋ UsernamePasswordAuthenticationFilter์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. Login ์ธ์ฆ ๋ก์ง flow POST "/login" ์ผ๋ก ์์ฒญ์ ๋ณด๋ด๋ฉด? Postman์ผ๋ก body์ username, password๋ฅผ ๋ฃ๊ณ "/login"์ผ๋ก ์์ฒญ์ ๋ณด๋ด๋ฉด, UsernamePasswordAuthenticationFilter๊ฐ ์์ฒญ์ ๋์์ฑ๊ณ username, password๋ฅผ ๊ฒ์ฆํฉ๋๋ค. ๊ทธ ๊ณผ์ ์์ ์ฐ๋ฆฌ๊ฐ ์ค๋ฒ๋ผ์ด๋ฉํ UsernamePasswordAuthenticationFilter.attemptAuthentication ๋ฉ์๋๊ฐ ํธ์ถ์ด ๋ฉ๋๋ค. POST๋ก ์์ฒญ์ด ์..
'๐ Spring' ์นดํ
๊ณ ๋ฆฌ์ ๊ธ ๋ชฉ๋ก (3 Page)
๋จ์ถํค
๋ด ๋ธ๋ก๊ทธ
๋ด ๋ธ๋ก๊ทธ - ๊ด๋ฆฌ์ ํ ์ ํ |
Q
Q
|
์ ๊ธ ์ฐ๊ธฐ |
W
W
|
๋ธ๋ก๊ทธ ๊ฒ์๊ธ
๊ธ ์์ (๊ถํ ์๋ ๊ฒฝ์ฐ) |
E
E
|
๋๊ธ ์์ญ์ผ๋ก ์ด๋ |
C
C
|
๋ชจ๋ ์์ญ
์ด ํ์ด์ง์ URL ๋ณต์ฌ |
S
S
|
๋งจ ์๋ก ์ด๋ |
T
T
|
ํฐ์คํ ๋ฆฌ ํ ์ด๋ |
H
H
|
๋จ์ถํค ์๋ด |
Shift + /
โง + /
|
* ๋จ์ถํค๋ ํ๊ธ/์๋ฌธ ๋์๋ฌธ์๋ก ์ด์ฉ ๊ฐ๋ฅํ๋ฉฐ, ํฐ์คํ ๋ฆฌ ๊ธฐ๋ณธ ๋๋ฉ์ธ์์๋ง ๋์ํฉ๋๋ค.