Back-End
-
[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] MyBatis의 resultMap 살펴보기Back-End/Spring Legacy 2023. 5. 24. 14:20
📑 resultMap이란? resultMap이란 myBatis에서 제공하는 자동 매핑으로 해결이 어려운 경우를 위해 구조를 설계할 수 있도록 만들어진 구조이다. 📑 클래스 객체 필드명과 테이블 컬럼명이 다를 때 클래스 객체가 다음과 같을 때 @Getter @Setter public class User { private int id; private String username; private String hashedPassword; } map 형태로 값을 매핑해서 조회하는 구문이 있다. select id, username, hashedPassword from some_table where id = #{id} 만약 테이블 컬럼명과 클래스 객체의 필드명이 동일할 경우 문제 없이 값이 매핑된다. 하지만 만약 쿼..
-
[Spring Security] 인증(Authentication)과 권한 부여(Authorization)Back-End/Spring Boot 2023. 5. 19. 11:28
스프링 시큐리티의 기본 동작 방식은 서블릿의 여러 종류의 필터와 인터셉터를 이용해 처리된다. 필터는 서블릿에서 말하는 단순한 필터를 의미하고, 인터셉터는 스프링에서 필터와 유사한 역할을 한다. 필터와 인터셉터는 특정한 서블릿이나 컨트롤러의 접근에 관여한다는 점에서 유사하지만 결정적인 차이를 구분하자면, 필터는 스프링과 무관하게 서블릿 자원이고, 인터셉터는 스프링의 빈으로 관리되면서 스프링 컨테스트 내에 속한다는 차이이다. 인터셉터의 경우는 스프링의 내우베엇 컨트롤러를 호출할 때 관여하기 때문에 스프링 컨텍스트 내에 있는 모든 자원을 활용할 수 있다. 스프링 시큐리티를 이용하면 위와 같이 인터셉터와 필터를 사용하면서 별도의 컨텍스트를 생성해서 처리한다. 스프링 시큐리티는 현재 동작하는 스프링 컨텍스트 내에..
-
[6-ch21~22 Spring ] 파일 업로드 방식 ( 중복처리, 섬네일 ,, )Back-End/Spring Legacy 2023. 5. 10. 16:50
일단 파일 업로드 방식을 알아보기전 c드라이브 밑에 uploadBook 폴더와 임시 업로드 파일을 저장할 temp 폴더를 생성해둔다. 첨부파일을 서버에 전송하는 방식은 크게 태그를 이용해 업로드하는 방식과 Ajax를 이용하는 방식으로 나눠볼 수 있다. 📌 태그를 이용하는 방식 : 브라우저의 제한이 없어야 하는 경우 사용 - 일반적으로 페이지 이동과 동시에 첨부파일을 업로드하는 방식 - 을 이용해 화면의 이동 없이 첨부파일을 처리하는 방식 📌 Ajax를 이용하는 방식 : 첨부파일을 별도로 처리하는 방식 - 을 이용하고 Ajax로 처리하는 방식 - HTML5의 Drag And Drop 기능이나 jQuery 라이브러리를 이용해서 처리하는 방식 코드로보는 스프링 웹 프로젝트 책에서는 Ajax를 위주로 처리하였다..
-
[MyBatis] 동적 쿼리 trim 문법 알아보기Back-End/Spring Legacy 2023. 4. 17. 08:41
은 하위에서 만들어지는 sql 문을 조사하여 앞 쪽에 추가적인 sql을 넣을 수 있다. prefix, suffix, prefixOverrides, suffixOverrides 속성을 지정할 수 있다. 📑 prefix 실행될 쿼리의 문 안 쿼리 가장 앞에 붙여준다. UPDATE board username=#{username},password=#{password} 📑 prefixOverrides 실행될 쿼리의 문 안 쿼리 가장 앞에 해당하는 문자들이 있으면 자동으로 지워준다. SELECT * FROM board WHERE id = #{id} OR TT LIKE '%' || #{searchContent} || '%' 📑 suffix 실행될 쿼리의 문 안 쿼리 가장 뒤에 붙여준다. 📑 suffixOverride..
-
[Spring] Log4j2 환경설정 , (+ log.info 에러 )Back-End/Spring Legacy 2023. 4. 4. 16:39
STS 플러그인을 통해 생성된 프로젝트는 로그를 처리하기 위해 Log4j라이브러리를 이용하는데 2021년 Log4j 관련 보안 문제가 이슈화되면서 가능하면 Log4j대신 Log4j2를 이용하는 것을 권장하고 있다. Spring Legacy Project를 생성하면 프로젝트에 존재하는 log4j.xml 파일은 Log4j를 위한 설정이므로 이를 제거한다. 📑 Log4j2 라이브러리 추가 pom.xml에서 Log4j와 관련된 항목을 찾아서 삭제한다. 삭제할때 slf4j 관련 라이브러리도 같이 삭제하도록 한다. 삭제 후 아래 라이브러리들을 추가해준다. org.apache.logging.log4j log4j-api 2.18.0 org.apache.logging.log4j log4j-core 2.18.0 org.a..