๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Spring Security Web์„ ์‚ฌ์šฉํ•˜์—ฌ IP ์ ‘๊ทผ ์ œ์–ด ๊ตฌํ˜„ํ•˜๊ธฐ Spring security web์˜ IpAddressMatcher์™€ spring interceptor๋ฅผ ์ด์šฉํ•ด ํด๋ผ์ด์–ธํŠธ IP๊ฐ€ ํŠน์ • IP ๋Œ€์—ญ์— ๋งž๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ์ ‘๊ทผ ์ œ์–ด ๋กœ์ง์„ ๊ตฌํ˜„ํ•ด๋ณด์ž. Dependency implementation 'org.springframework.security:spring-security-web' spring-security-web ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. Interceptor ์ƒ์„ฑ ๋ฐ ๋“ฑ๋ก @Slf4j @RequiredArgsConstructor @Component public class IpAddressAccessControlInterceptor implements HandlerInterceptor { @Override public boolean preHandle(Http.. 2021. 9. 1.
์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฐฐ๋„ˆ ์ ์šฉํ•˜๊ธฐ(+ ๋ณ€ํ™˜ ์‚ฌ์ดํŠธ ์ถ”์ฒœ ๋ฐ color ๋ณ€๊ฒฝ) ์‹ค๋ฌด์—์„œ ๋ชจ ์„œ๋น„์Šค๋ฅผ ์šด์˜ ๊ฐœ๋ฐœ ํ•˜๋˜ ์ค‘.. ํ•œ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋กœ์ปฌ์—์„œ ๊ธฐ๋™ํ• ๋•Œ๋งˆ๋‹ค ๋ฌด์–ธ๊ฐ€ ๋ฐ‹๋ฐ‹ํ•จ์„ ๋Š๋ผ๊ณค ํ–ˆ๋Š”๋ฐ ๊ทธ ๋Š๋‚Œ์˜ ์ด์œ ๋Š” ๋ฐ”๋กœ ๋ฐฐ๋„ˆ์˜€๋‹ค. ๊ธฐ๋™ํ•  ๋•Œ ๋งˆ๋‹ค ์ฝ˜์†”์— ์ด๋Ÿฐ ๋ฉ‹๋“œ๋Ÿฌ์ง€์ง€ ์•Š์€ ๊ธฐ๋ณธ ๋ฐฐ๋„ˆ๊ฐ€ ์ฐํ˜”๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ์ตœ๊ทผ์— ์Šคํ”„๋ง ๋ถ€ํŠธ๋กœ ์ „ํ™˜๋๊ณ , ์ „ํ™˜ ๋‹น์‹œ ๋ฐฐ๋„ˆ ๋ถ€๋ถ„์€ ๋”ฑํžˆ ์†๋ณด์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ง˜์— ๋“ค์ง€ ์•Š์•„.. ๊ทธ๋Ÿผ, ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ์˜ ๋ฐฐ๋„ˆ๋ฅผ ๋ฐ”๊ฟ”๋ณด์ž. ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฐฐ๋„ˆ ๋ณ€๊ฒฝ - banner.txt ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ resources/banner.txt๊ฐ€ ์กด์žฌํ•˜๋ฉด ํ•ด๋‹น ํ…์ŠคํŠธ๋ฅผ ๊ธฐ๋™ ์‹œ ๋ฐฐ๋„ˆ๋กœ ๋ฟŒ๋ ค์ค€๋‹ค. ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๋‚ด์šฉ์„ ์ž‘์„ฑํ•œ๋‹ค. ๐Ÿ“„ banner.txt ==================== My Banner ==================== ์ด์ œ ๋‹ค์‹œ .. 2021. 8. 31.
Feign ํด๋ผ์ด์–ธํŠธ ๊ตฌํ˜„๊ณผ Eureka, Hystrix ์ ์šฉ 1. Dependency ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ์— spring-cloud-starter-openfeign๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' 2. Feign client ํ™œ์„ฑํ™” @EnableFeignClients ์• ๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ feign client๋ฅผ ํ™œ์„ฑํ™”ํ•œ๋‹ค. @SpringBootApplication ๋˜๋Š” @Configuration ํด๋ž˜์Šค์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. @EnableFeignClients @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(A.. 2021. 8. 18.
์Šคํ”„๋ง ๋ถ€ํŠธ ๋กœ๊ทธ์ธ (1) - ์ฟ ํ‚ค, ์„ธ์…˜์„ ์ด์šฉํ•ด ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ ์ธํ”„๋Ÿฐ - ์Šคํ”„๋ง MVC 2ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ™œ์šฉ ๊ธฐ์ˆ ์„ ๋ณด๊ณ  ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ ์ฟ ํ‚ค์™€ ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž. ํ”„๋กœ์ ํŠธ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ 2.4.9์— spring-boot-starter-web, spring-boot-starter-thymeleaf, spring-boot-starter-validation, lombok ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ์˜์กด์„ฑ๊ณผ ๊ฐ™์ด ๋ทฐ ํ…œํ”Œ๋ฆฟ์€ thymeleaf๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. Bootstrap ์ด๊ฑด ๊ผญ ํ•„์š”ํ•œ๊ฑด ์•„๋‹ˆ๋ฏ€๋กœ ์Šคํ‚ตํ•ด๋„ ๋œ๋‹ค. https://getbootstrap.com/ ์—์„œ bootstrap.min.css ํŒŒ์ผ์„ ๋ฐ›์•„ resources/static/css์— ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด์ œ ํšŒ์› ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ.. 2021. 8. 13.
๋„ทํ”Œ๋ฆญ์Šค ์œ ๋ ˆ์นด(Eureka)๋ฅผ ์‚ฌ์šฉํ•œ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ๊ตฌํ˜„ ๋„ทํ”Œ๋ฆญ์Šค ์œ ๋ ˆ์นด(Eureka)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด์ž. ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ 2๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•˜๋‚˜๋Š” ๋””์Šค์ปค๋ฒ„๋ฆฌ ์„œ๋ฒ„, ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋””์Šค์ปค๋ฒ„๋ฆฌ ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์„ ํ•˜๋„๋ก ํ•  ๊ฒƒ์ด๋‹ค. java 11 spring boot 2.4.9 gradle ๋””์Šค์ปค๋ฒ„๋ฆฌ ์„œ๋ฒ„ - ์œ ๋ ˆ์นด ์„œ๋ฒ„ ์šฐ์„  ๋””์Šค์ปค๋ฒ„๋ฆฌ ์„œ๋ฒ„ ์—ญํ• ์„ ํ•  ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ธํŒ…ํ•œ๋‹ค. Dependency spring-cloud-starter-eureka-server ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server' ์œ ๋ ˆ์นด ์„œ๋ฒ„ ํ™œ์„ฑํ™” ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฉ”์ธ ํด๋ž˜์Šค์— @EnableEurekaServer .. 2021. 8. 2.
[์Šคํ”„๋ง ๋ถ€ํŠธ/MVC] ์ •์  ๋ฆฌ์†Œ์Šค(Static Resources) ๊ธฐ๋ณธ ์„ค์ •๊ณผ ์ปค์Šคํ…€ ๋ฐฉ๋ฒ• [์Šคํ”„๋ง ๋ถ€ํŠธ/MVC] ์ •์  ๋ฆฌ์†Œ์Šค(Static Resources) ๊ธฐ๋ณธ ์„ค์ •๊ณผ ์ปค์Šคํ…€ ๋ฐฉ๋ฒ• ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์ •์  ๋ฆฌ์†Œ์Šค(static resources)์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๋งคํ•‘ ์„ค์ •๊ณผ ์ปค์Šคํ…€์„ ์ง€์›ํ•œ๋‹ค. ์‹ค์ œ๋กœ ํ™•์ธํ•ด๋ณด์ž. ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ์˜ src/main/resources/static/์— hello.html์„ ์ƒˆ๋กœ ๋งŒ๋“ ๋‹ค. Hello Static Resource ์ •์  ๋ฆฌ์†Œ์Šค๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์žฌ๊ธฐ๋™ํ•˜์ง€ ์•Š๊ณ  ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ ๋งŒ์œผ๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ํ›„ http://localhost:8080/hello.html๋กœ ์š”์ฒญํ•ด๋ณด์ž. ์ •์  ๋ฆฌ์†Œ์Šค ๋งคํ•‘ URL ํŒจํ„ด ๊ธฐ๋ณธ์ ์œผ๋กœ /**(๋ฃจํŠธ) ๋ถ€ํ„ฐ ๋งคํ•‘๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„ ์˜ˆ์ฒ˜๋Ÿผ http://127.0.0.1:8080/hello.html์„ ์š”์ฒญํ•˜๋ฉด ์ •์ .. 2020. 8. 19.
์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ ์ฆ‰์‹œ ์›น ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ  - AutoConfiguration ์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ ์ฆ‰์‹œ ์›น ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ  - AutoConfiguration spring-boot-starter-web ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ๋งŒ ํ•˜๋ฉด ์ฆ‰์‹œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. @RestController public class UserController { @GetMapping("/hello") public String hello() { return "hello"; } } ์•„๋ฌด๋Ÿฐ ์„ค์ • ์—†์ด ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด GET /hello ์š”์ฒญ์— ๋Œ€ํ•œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๋ฉ”์ธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(@SpringBootApplication)์„ ์‹คํ–‰ํ•˜๋ฉด ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์ž‘ํ•œ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ๊ธฐ๋ณธ ์„ค์ • ์ด๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ์„ค์ •๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ .. 2020. 8. 19.
Spring Boot + MyBatis ์„ค์ • ๋ฐฉ๋ฒ•(HikariCP, H2) Spring Boot + MyBatis ์„ค์ • ๋ฐฉ๋ฒ•(HikariCP, H2) ๐Ÿ“ ์ˆœ์„œ 1. ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ 2. ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ ์„ค์ •(schema.sql, data.sql) 3. DBCP/DataSource ์„ค์ •(HikariCP) 4. MyBatis ์„ค์ •(@MapperScan, XML ์œ„์น˜, CamelCase, Alias, ๋กœ๊ทธ๋ ˆ๋ฒจ) 5. Model, Mapper ์ƒ์„ฑ 6. ํ…Œ์ŠคํŠธ 1. ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ MyBatis๋ฅผ ์ด์šฉํ•œ DB ์—ฐ๋™์„ ์œ„ํ•œ ์ƒˆ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋Š” IDE๋ฅผ ์ด์šฉํ•˜๋˜์ง€, spring initializr(start.spring.io)๋ฅผ ์ด์šฉํ•ด ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ”๋Š” 8๋กœ, ์˜์กด์„ฑ์€ Spring Web, Spring Data JDBC.. 2020. 8. 1.
Spring MVC - @PropertySource ์‚ฌ์šฉ ์ค‘ FileNotFoundException: Could not open ServletContext resource ์—๋Ÿฌ Spring MVC - @PropertySource ์‚ฌ์šฉ ์ค‘ FileNotFoundException: Could not open ServletContext resource ์—๋Ÿฌ โš™๏ธ Spring Web MVC 5.2.6.RELEASE ์Šคํ”„๋ง ์›น MVC ํ”„๋กœ์ ํŠธ์—์„œ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. java.io.FileNotFoundException: Could not open ServletContext resource [/properties/data1.properties] ํ”„๋กœ์ ํŠธ์˜ ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ ์œ„์น˜๋Š” src/main/resources/properties/data1.properties ๋ฉ”์ด๋ธ ํ”„๋กœ์ ํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œํ•˜๋ฉด resources ๋‚ด์˜ ํŒŒ์ผ๋“ค์ด classpath๋กœ ๋ณต์‚ฌ๋œ๋‹ค... 2020. 5. 6.
[IntelliJ] Spring Web MVC ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ์„ธํŒ… - ์ž๋ฐ” ์„ค์ • ์‚ฌ์šฉ [IntelliJ] Spring Web MVC ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ์„ธํŒ… - ์ž๋ฐ” ์„ค์ • ์‚ฌ์šฉ 1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์ƒˆ๋กœ์šด Maven ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. Create from archetype ์ฒดํฌ, maven-archetype-webapp์„ ์„ ํƒํ•˜๊ณ  Next ํด๋ฆญ ํ”„๋กœ์ ํŠธ ์ •๋ณด ์ž…๋ ฅํ•˜๊ณ  Next ํด๋ฆญ ์‚ฌ์šฉํ•  Maven ์„ ํƒ ํ›„ Finish ํด๋ฆญ ๊ธฐ๋ณธ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” pom.xml 4.0.0 com.atoz_develop project03 1.0-SNAPSHOT war project03 Maven Webapp http://www.example.com UTF-8 1.7 1.7 junit junit 4.11 test project03 maven-clean-plugin 3.1.0 maven-resources-plugi.. 2020. 5. 1.
[IntelliJ] Spring Web MVC ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ์„ธํŒ… - XML ์„ค์ • ์‚ฌ์šฉ [IntelliJ] Spring Web MVC ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ์„ธํŒ… - XML ์„ค์ • ์‚ฌ์šฉ ๐Ÿ’ก ๋ฒ„์ „ : JDK8 / Spring MVC 5.2.6.RELEASE / Tomcat 9 1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์ƒˆ๋กœ์šด Maven ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. Create from archetype ์ฒดํฌ, maven-archetype-webapp์„ ์„ ํƒํ•˜๊ณ  Next ํด๋ฆญ ํ”„๋กœ์ ํŠธ ์ •๋ณด ์ž…๋ ฅํ•˜๊ณ  Next ํด๋ฆญ ์‚ฌ์šฉํ•  Maven ์„ ํƒ ํ›„ Finish ํด๋ฆญ ๊ธฐ๋ณธ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” pom.xml 4.0.0 com.atoz_develop project03 1.0-SNAPSHOT war project03 Maven Webapp http://www.example.com UTF-8 1.7 1.7 junit junit 4.11 test proje.. 2020. 5. 1.
์Šคํ”„๋ง JDBC ํ”„๋กœ๊ทธ๋ž˜๋ฐ - MyBatis ์—ฐ๋™ ์Šคํ”„๋ง JDBC ํ”„๋กœ๊ทธ๋ž˜๋ฐ - MyBatis ์—ฐ๋™ ์ด ๊ธ€์—์„œ๋Š” Oracle DB 11g๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๋‹ค๋ฅธ DB๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค. MyBatis - Spring JDBC ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‰ฝ๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - Mapper์˜ ์—ญํ• ์„ ํ™•์žฅํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ์„ ๋ชจ๋‘ Mapper์—์„œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•œ๋‹ค. ์˜์กด์„ฑ ์ถ”๊ฐ€ Spring JDBC, Oracle JDBC ๋“œ๋ผ์ด๋ฒ„, Apache Commons DBCP์™€ MyBatis ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. org.springframework spring-jdbc 5.1.9.RELEASE com.oracle ojdbc6 11.2.0.3 org.apache.commons commons-dbcp2 2.7.0 org.mybatis mybati.. 2020. 4. 28.