๐Ÿ’ Spring

๐Ÿ’ Spring

Spring-Boot REST Docs ์ ์šฉ๊ธฐ (with. Gradle, Maven)

์‹คํ–‰ ํ™˜๊ฒฝ Spring Boot 2.7.1 Gradle 7.4.1 Maven 3.8.5 ๋นŒ๋“œ ์‹œ์Šคํ…œ ์„ค์ • Gradle ๋”๋ณด๊ธฐ plugins { id 'org.springframework.boot' version '2.7.1' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' id 'org.asciidoctor.jvm.convert' version '3.3.2' // (1) } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } }..

๐Ÿ’ Spring

Optional ๊ฐ’์ด ์žˆ์„ ๋•Œ Exception ์ฒ˜๋ฆฌ

ํšŒ์› ๋„๋ฉ”์ธ์—์„œ Username์ด ์ค‘๋ณต์ด ๋˜๋ฉด ์•ˆ๋˜๋ฏ€๋กœ ์•„๋ž˜ ๊ฐ™์ด ๋กœ์ง์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. Optional account = accountRepository.findByUsername(username); if (account.isPresent()) throw new AccountDuplicateException(username); ํ•˜์ง€๋งŒ Optional์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ๋ง๊ณ  ifPresent๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ”๋กœ Exception์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. accountRepository.findByUsername(username) .ifPresent(a -> { throw new AccountDuplicateException(username) }); ํ›จ์”ฌ ๋” ๊ฐ„๊ฒฐํ•ด์ง€๊ณ  ์•Œ์•„๋ณด๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ Spring/Spring Security

Spring Security Error Code ๋ณ„ ํŽ˜์ด์ง€ ์ฒ˜๋ฆฌํ•˜๊ธฐ

Spring boot + Security ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์—๋Ÿฌ ์ฝ”๋“œ ๋งˆ๋‹ค ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์€๋ฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋Š”์ง€ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ณด๋‹ค๊ฐ€ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์ƒ๊ฐ๋‚ฌ์Šต๋‹ˆ๋‹ค. 1. EntryPoint, Handler ์‚ฌ์šฉ authenticationEntryPoint, accessDeniedHandler์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•ด๋‹น ์—๋Ÿฌ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. Security Config /* Security Config */ @Override protected void configure(HttpSecurity http) throws Exception { http // .. .exceptionHandling() .authenticationEntryPoint(new MyAuthenticationEntryP..

๐Ÿ’ Spring

Mockito Framework์— ๋Œ€ํ•ด์„œ

Mockito๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ: Spring-boot, Junit5, Mockito ๋ชจ๋“  ์ฝ”๋“œ๋Š” Github์— ์žˆ์Šต๋‹ˆ๋‹ค :) Mockito Mockito๋ž€? ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ํ…Œ์ŠคํŠธํ•  ๋•Œ ๋ชจ๋“  ๋นˆ์„ ์ผ์ผํžˆ ์ฃผ์ž…์‹œํ‚ค์ง€ ์•Š๊ณ , Mock ๊ฐ์ฒด(๊ฐ€์งœ ๊ฐ์ฒด)๋ฅผ ์ฃผ์ž…์‹œ์ผœ ํ–‰์œ„๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๊ณ , ์•„์ง ์ž‘์„ฑ๋˜์ง€ ์•Š์€ ์ฝ”๋“œ๋“ค(์˜์กด์„ฑ ๊ฐ์ฒด) ๋˜๋Š” ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์šด ์˜์กด์„ฑ ๊ฐ์ฒด๋“ค์„ Mockingํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜์กด์„ฑ (dependency) spring boot๋ฅผ ์‚ฌ์šฉ์ค‘์ด๋ผ๋ฉด, spring-boot-starter-test ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ด๋ฏธ JUnit5์™€ Mockito๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ์œผ๋ฏ€๋กœ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. Spring.io - 41.Testing Mock ํ…Œ์ŠคํŠธ ์ˆœ์„œ moc..

๐Ÿ’ Spring

H2 ์ธ๋ฉ”๋ชจ๋ฆฌ DB ์„ค์ •ํ•˜๊ธฐ (Spring boot)

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

Jdbc, JdbcTemplate, Spring Data Jpa์— ๋Œ€ํ•ด์„œ

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..

iseunghan
'๐Ÿ’ Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)