Back-End/Spring Boot
-
[Spring Boot] Spring Security 설정, 예제, 용어와 흐름Back-End/Spring Boot 2023. 6. 23. 10:17
📑 Spring Security 설정 스프링 시큐리티를 구현하는 프로젝트를 생성한다. 생성된 패스워드는 기본으로 사용해볼 수 있는 'user' 계정의 패스워드이다. 프로젝트가 정상적으로 실행된다면 브라우저를 열어 localhost:/8080/login의 경로로 접근했을 때 다음과 같은 화면이 나온다. 스프링 부트가 아닌 경우 web.xml 설정을 변경해서 시큐리티 설정이 가능한데, 번거롭고 복잡하다. 하지만 스프링 시큐리티는 자동 설정 기능이 있어 별도의 설정 없이도 연동 차리는 된다. 하지만 이용하는 모든 프로젝트는 프로젝트에 맞는 설정을 추가하는 것이 일반적이므로 이를 위한 SecurityConfig 클래스를 추가해준다. 시큐리티와 관련된 설정이 정상적으로 동작하는지 확인하기 위해 간단한 컨트롤러를 ..
-
[Spring Boot] JAR -> WAR로 변경하기Back-End/Spring Boot 2023. 6. 12. 23:02
스프링 부트에서 화면단으로 thymeleaf를 사용하려다가 jsp로 변경했다. 프로젝트는 이미 jar로 생성해서 작업하던 중 아 맞다! jsp는 war로 배포해야되는 게 생각났다. JAR와 WAR의 차이점은 아래 포스팅에서 확인하기 바란다. https://wonisdaily.tistory.com/252 [Spring Boot] JAR/WAR 배포 방법 비교하기 스프링 부트의 장점 중 하나는 실행 가능한 JAR(Executable Jar)로 빌드하여 프로젝트를 바로 실행시킬 수 있다는 점이다. 이번 포스팅에서는 JAR와 WAR의 차이점을 알아보려고 한다. 기본적으로 JAR, WAR wonisdaily.tistory.com 📑 1. library 다운 (build.gradle) 수정 🔨 1. plugin 추..
-
[Spring Boot] JAR/WAR 배포 방법 비교하기Back-End/Spring Boot 2023. 6. 12. 22:45
스프링 부트의 장점 중 하나는 실행 가능한 JAR(Executable Jar)로 빌드하여 프로젝트를 바로 실행시킬 수 있다는 점이다. 이번 포스팅에서는 JAR와 WAR의 차이점을 알아보려고 한다. 기본적으로 JAR, WAR 모두 Java jar 옵션(java -jar)을 이용해 생성된 압축(아카이브) 파일로, 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일(리소스, 속성 파일 등)을 패키징 한 것이다. 📑 JAR (Java Archive) JAR 패키징은 클라우드를 염두에 둔 선택이다. WAR 파일은 기존의 자바 애플리케이션 서버에 애플리케이션을 배포할 때는 적합하지만 대부분의 클라우드 플랫폼을 구성하는데는 잘 맞지 않는다. 일부 클라우드 플랫폼에서는 WAR 파일을 배포하고 실행할 수 있다. ..
-
[Spring Security] 인증(Authentication)과 권한 부여(Authorization)Back-End/Spring Boot 2023. 5. 19. 11:28
스프링 시큐리티의 기본 동작 방식은 서블릿의 여러 종류의 필터와 인터셉터를 이용해 처리된다. 필터는 서블릿에서 말하는 단순한 필터를 의미하고, 인터셉터는 스프링에서 필터와 유사한 역할을 한다. 필터와 인터셉터는 특정한 서블릿이나 컨트롤러의 접근에 관여한다는 점에서 유사하지만 결정적인 차이를 구분하자면, 필터는 스프링과 무관하게 서블릿 자원이고, 인터셉터는 스프링의 빈으로 관리되면서 스프링 컨테스트 내에 속한다는 차이이다. 인터셉터의 경우는 스프링의 내우베엇 컨트롤러를 호출할 때 관여하기 때문에 스프링 컨텍스트 내에 있는 모든 자원을 활용할 수 있다. 스프링 시큐리티를 이용하면 위와 같이 인터셉터와 필터를 사용하면서 별도의 컨텍스트를 생성해서 처리한다. 스프링 시큐리티는 현재 동작하는 스프링 컨텍스트 내에..
-
[Spring Boot] bootstrap css 파일 경로 인식 못 함Back-End/Spring Boot 2023. 3. 30. 11:36
spring boot 프로젝트를 만드는데 css 파일이 적용이 안되는 경우가 있다. 대부분은 경로 문제일 것이다. 📑 1. css, js 파일이 /resources/static 경로에 위치해 있는지 확인한다. 📑 2. /css/bootstrap.min.css 스프링 부트의 설정에 static 폴더가 기본 경로로 지정되어 있기 때문에 static은 포함하지 않고 static 밑의 경로만 적어주면 된다. (x) (o) 아래와 같이 부트스트랩이 적용된 걸 확인할 수 있다.
-
[Spring Boot] 서버 재시작 없이 html 변경하기 (thymeleaf)Back-End/Spring Boot 2023. 3. 29. 10:48
프로젝트를 진행하다보면 front단의 수정이 여러번 발생한다. Spring Boot를 사용하면 정적 소스들을 수정해도 브라우저에 바로 적용되지 않는 걸 확인할 수 있다. 즉) 서버를 항상 재시작해야한다. 이는 여간 불편한 게 아니다. 그리하여 서버 재시작 없이 html, js 등 정적 파일 수정시 반영될 수 있도록 설정하고자한다. 📑 1. devtools dependency 추가 implementation 'org.springframework.boot:spring-boot-devtools' 📑 2. application.properties 파일 수정 # 정적 리소스에 변화가 있을 때 바로 반영한다. spring.devtools.livereload.enabled=true # thymeleaf 참조 경로 s..
-
[Spring Boot] 필터와 인터셉터 차이, 로그인 인증 체크하기Back-End/Spring Boot 2022. 11. 2. 14:30
지난번 포스팅에서 간단히 Filter, Interceptor, APO의 차이점과 개념에 대하 알아봤다. 이번엔 필터와 인터셉터로 로그 남기기와 로그인한 사용자만 특정 화면에 접근할 수 있도록 인증 체크하는 예제를 통해 알아보려고 한다. https://wonisdaily.tistory.com/89 [Spring] Filter, Interceptor, AOP 차이점 자바 웹 개발을 하다보면 공통적으로 처리해야 할 업무들이 많다. 예를 들어 로그인 관련(세션체크)처리, 권한체크, PC와 모바일웹의 분기처리, 로그, 페이지 인코딩 변환 등등. 공통 관련된 코드 wonisdaily.tistory.com 📑 공통 관심사 로그인한 사용자만 상품 관리 페이지에 들어갈 수 있어야한다. 상품 관리 컨트롤러에서 로그인 여부..
-
[Spring Boot] Bean Validation , 한계와 객체 분리Back-End/Spring Boot 2022. 11. 1. 12:16
📑 Bean Validation이란? 이전 포스팅의 검증 로직을 살펴보면 아래와 같이 직접 코드로 작성해야했다. 특정 필드에 대한 검증 로직은 대부분 빈 값인지 아닌지, 특정 크기를 넘는지 아닌지와 같이 매우 일반적인 로직이다. public String addItemV4(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { //검증에 실패하면 다시 입력 폼으로 if(bindingResult.hasErrors()){ log.info("errors ={}", bindingResult); return "validation/v2/addForm"; } log.info("o..