반응형

Programming/Spring 14

(MyBatis) include refid 용도 및 사용 방법

MyBatis 용도 및 사용 방법구축된 시스템을 분석하는 과정에서 mybatis xml 파일 내부적으로 , 형식의 태그가 사용되는 것을 보았는데요.해당 포스팅에서는 include 태그와 sql 태그는 어떤 용도로 사용되는지, 어떻게 사용되는지에 대해 정리하였습니다. , 태그의 사용 용도 WHERE emp_no = #{empNo} SELECT emp_no , first_name , last_name FROM employees SELECT emp_no , dept_no FROM dept_emp (하나의 SQL Map XML 파일에 정의된 쿼리) 위 예시를 통해 알 수 있는 것처럼 include, sql 태그는 여러..

Programming/Spring 2024.12.14

Logback PatternLayout을 통한 로그 마스킹 처리 방법

Logback PatternLayout을 통한 로그 마스킹 처리 방법(LayoutWrappingEncoder, PatternLayoutEncoder) '개인정보의 암호화' 등 관련된 법령에 따라 비밀번호, 주민등록번호 등은 저장 시에 반드시 암호화하여 저장해야 합니다.그리고 만약 시스템에서 요청 파라미터에 대한 로그를 남기고 있을 경우 암호화 처리 전의 비밀번호, 주민등록번호 등이 로그 파일에 남을 수 있다는 점 또한 주의해야 하는데요. 해당 포스팅에서는 logback 로깅 라이브러리 사용 시 PatternLayout 클래스를 통한 로그 마스킹 처리 방법에 대해 알아보고, 더불어 Encoder, LayoutWrappingEncoder, PatternLayoutEncoder 등에 대한 개념에 대해서도 정리..

Programming/Spring 2024.11.02

(spring project) log4j2 로그 파일 분리하기

spring 프로젝트 log4j2 로그 파일 분리하기 해당 포스팅은 log4j2를 사용하는 스프링 프로젝트에서 특정 용도의 로그에 대한 로그 파일을 별도로 분리하는 방법을 정리한 내용입니다.혹시나 log4j2가 아니라 logback을 쓰시더라도 java 코드단의 적용 방식은 같기 때문에 로그 설정 xml 파일의 작성 방법만 logback에 맞춰서 적용하시면 됩니다. 1. 로그 파일을 분리하려는 이유먼저 로그 파일의 분리를 고려하게 된 가장 큰 이유는 결국 잘 관리된 로그를 통해 서비스 유지보수 및 운영을 더 효율적으로 하기 위함인데요. 기본적으로 서비스의 전체 로그는 RollingFile의 'TimeBasedTriggeringPolicy' 및 'SizeBasedTriggeringPolicy'를 통해 날짜..

Programming/Spring 2024.08.25

MyBatis SQL Injection 발생하는 상황 및 방어 방법

MyBatis SQL Injection 발생하는 상황 및 ${ }, #{ } 바인딩 차이 1.SQL Injection 이란? 데이터베이스(Database)와 연동된 웹사이트 및 웹 애플리케이션에서 공격자가 입력 폼 또는 URL을 통해 SQL 쿼리문을 전송하여 데이터베이스를 열람 또는 조작하는 해킹 기법을 말합니다. SQL Injection 공격의 종류에는 크게 '인증 우회(Auth Bypass)', '데이터 노출(Data Disclisure)', '원격명령 실행(Remote Command Excute)' 세 가지가 있습니다. 해당 공격들은 클라이언트로부터 입력되는 데이터의 유효성을 제대로 필터링하지 않아 발생하며, 쉬운 공격 난이도에 비해 상당한 피해를 줄 수 있기 때문에 SQL Injection을 예방..

Programming/Spring 2024.04.10

spring + oracle(ojdbc) 연결 방법 정리

Spring + Oracle(OJDBC) 연결 방법 정리 최근 eclipse + spring 환경에서 작업을 많이 하게 되면서 spring 프로젝트에서 ojdbc를 통해 oracle 데이터베이스에 연결하는 방법을 정리해 보았습니다. 앞서 JDBC와 OJDBC에 대해 간략하게 먼저 'JDBC'는 Java Database Connectivity의 약자로 자바 언어를 이용하여 데이터베이스에 접속하고 SQL 쿼리를 실행할 수 있게 해주는 자바 API입니다. JDBC는 데이터베이스와의 통신을 위한 표준화된 방법을 제공하기 때문에 DBMS(MySQL, Oracle, MSSQL 등)의 종류에 관계없이 JDBC 인터페이스를 이용하여 데이터베이스 작업을 처리할 수 있습니다. 그리고 각 데이터베이스 벤더는 아래와 같이 자..

Programming/Spring 2024.03.30

mybatis selectKey 사용 방법 및 주의할 점 (selectKey 다중 컬럼)

mybatis selectKey 사용 방법 및 주의할 점 mybatis에서는 insert, update, delete 쿼리에 대한 결과로 해당 쿼리에 영향을 받은 행의 수를 반환합니다. 그중에서 insert의 경우 성공 시 int 타입의 1이라는 결과를 반환하며, 실패 시 에러가 발생하게 되는데요. (update, delete의 경우 쿼리에 영향을 받은 행의 수가 여러 행일 경우 그 값만큼 결과를 반환하는 반면, insert의 경우 여러 건에 대해 쿼리가 성공하더라도 1을 반환한다는 특징이 있습니다.) 해당 포스팅에서는 selectKey 요소를 통해 mybatis에서 insert 결과로 해당 데이터의 key 값을 받아오는 방법 및 selectKey 사용법, 그리고 주의할 점에 대해서 정리하였습니다. My..

Programming/Spring 2024.03.20

ObjectMapper는 Bean으로 등록해서 사용하자

ObjectMapper는 Bean으로 등록해서 사용하자 'ObjectMapper'는 Java 객체와 JSON 데이터 간의 변환으로 인해 Java 기반 프로젝트에서 많이 사용되는 클래스인데요. ObjectMapper는 생성 비용 등의 이유로 사용될 때마다 new 연산자로 생성하는 것보다 bean으로 등록하여 사용하는 것이 좋다고 생각하는데, 그 생각의 근거를 스스로 정리하기 위해 글을 작성했습니다. (생성 비용이나 메모리 등, 미세한 차이일 수 있지만 불필요한 자원의 낭비를 막을 수 있는 부분이라고 생각합니다.) ObjectMapper란? ObjectMapper는 JSON 데이터를 Java 객체로 역직렬화 하거나, 반대로 Java 객체를 JSON 데이터로 직렬화할 때 사용되는 Jackson 라이브러리의 클..

Programming/Spring 2024.03.12

(spring) logback, log4j2 로깅 적용 과정과 xml 파일 차이점 정리

logback, log4j2 로깅 적용 과정과 xml 파일 차이점 정리 해당 포스팅은 스프링 프로젝트에서 로깅 시 사용되는 라이브러리인 'logback(+ logback.xml)'과 'log4j2(+ log4j2.xml)'을 적용하는 각각의 방법과 차이점을 정리한 내용입니다. logback, log4j2 차이점(+ slf4j)먼저 자바 기반 애플리케이션에서 사용되는 로깅 관련 프레임워크는 'log4j', 'logback', 'log4j2'가 있는데요.logback과 log4j2는 둘 다 log4j를 기반으로 하고 있으며, log4j는 2015년 지원이 중단되었기 때문에 logback과 log4j2가 많이 사용되고 있습니다.(각각의 차이점에 대한 내용은 포스팅 맨 하단 관련 자료를 링크해 두었으니 필요하신..

Programming/Spring 2024.02.27

(eclipse) Spring MVC Project 수동 생성 과정 정리

이클립스 Spring MVC Project 수동 생성 과정 정리 이클립스 환경에서 'Oracle JDK 11' + 'STS3(Spring Tools 3 Add-On for Spring Tools)'를 설치한 상태로 'Spring MVC Project'를 생성하려고 했으나, 구글링을 통해 관련된 해결책을 모두 시도해 보았음에도 불구하고 Templates에서 'Spring MVC Project'를 찾을 수 없었습니다. (STS 자체를 설치하여 실행해도 해당 템플릿이 나오지 않았습니다.) eclipse 버전을 낮춰보려고 하다가 프로젝트 구조도 다시 익힐 겸 'Spring MVC Project'를 수동으로 생성하였으며, 그 과정을 정리하였습니다. (아래 과정은 'eclipse 2022-03' 및 'Spring ..

Programming/Spring 2024.02.23

ThreadPoolTaskScheduler를 통해 스케줄러 동작 시간 동적으로 변경하기

ThreadPoolTaskScheduler를 통해 스프링 스케줄러 동작 시간 동적으로 변경하는 방법 기존에는 스케줄링 기능이 필요할 때 '@Scheduler' 어노테이션을 통해 간단하게 스케줄러 기능을 사용했었는데요. 이번에 외부에서 받은 값을 통해 스케줄링 시간을 동적으로 변경하는 기능이 필요하여 알아보던 중 'ThreadPoolTaskScheduler'를 알게 되어 관련 내용을 직접 테스트해 보며 정리한 내용입니다. ... (생략) (root-context.xml 파일 중 스케줄러 관련 task 설정이며, task 외 부분은 생략되었습니다.) 위 코드는 스프링에서 스케줄러를 사용하기 위해 root-context.xml 파일에 task 관련 설정을 추가한 내용입니다. ThreadPoolTaskSched..

Programming/Spring 2024.01.24
반응형