본문 바로가기

전체 글26

DB 접속정보 git에 공유되지 않도록 설정하기 목차 아래와 같이 접속정보가 Java코드 내에 있어 git으로 공유되면 여러 문제가 발생할 수 있다. @Bean(destroyMethod = "close") public HikariDataSource dataSource() { HikariDataSource dataSource = new HikariDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test"); dataSource.setUsername("testuser"); dataSource.setPassword("test1234"); return dataSource; } DB 접속정.. 2023. 12. 10.
[Slf4j] 스프링의 디버깅 도구 Slf4j Library 목차 Slf4j를 사용하는 이유 개발을 하면서 로그를 띄울 때 System.out.println()을 사용하는 경우가 있다. 그러나 System.out.println()으로 디버깅을 할 경우 배포한 이후에도 해당 메세지가 콘솔에 계속 출력되고, 이는 심각한 성능 저하로 이어진다. 그렇다고 매번 디버깅 메세지를 썼다가 지웠다 하기는 매우 번거롭다. Slf4j를 사용하면 메세지의 log level을 설정할 수 있고, 개발 단계 로그의 log level과 배포 단계 로그의 log level을 구분하면 log4j.xml을 통해 쉽게 특정 단계의 로그만 출력되도록 할 수 있다. log level과 log4j.xml에 관한 글 Slf4j 사용방법 log4j.xml 설정 변경 log4j.xml의 Application.. 2023. 12. 10.
[log4j.xml] 스프링의 디버깅 로그 자세히 띄우기 목차 Log Level trace > debug > info > warn > error > fatal trace log가 가장 많이 발생하고 fatal log로 갈수록 적게 발생한다. 일반적으로 개발 환경에서는 debug레벨의 로그들을 확인해가며 개발하고, 운영 서버는 로그가 너무 많이 출력되면 서버의 속도가 저하되기 때문에 error레벨의 로그만 출력되도록 한다. 출력될 Log Level 설정하기 src/main/resources/log4j.xml 파일 안에 3rdparty Loggers라는 항목이 있을 것이다. log4j.xml파일을 변경하지 않았다면 모두 info로 설정되어 있을 텐데 조금 더 자세히 출력하고 싶을 경우 내가 출력하고 싶은 이들의 level value를 debug로 변경하면 된다. .. 2023. 12. 10.
[crontab] Linux에서 일정 시간마다 프로그램 실행되도록 설정하기 목차 CRON이란 Unix계열 컴퓨터 운영체제의 시간 기반 스케쥴러이다. 특정 프로그램을 시간, 날짜 간격에 주기적으로 실행할 수 있도록 스케쥴링 하기 위해 cron을 사용한다 30분에 한번씩 외부 데이터를 가져와서 DB에 넣는 프로그램을 수행한다거나 파일 백업을 수행할 때 유용하게 사용될 수 있다. CRON 스케쥴링 명령어 CRON 어플리케이션 설정 명령어 crontab -e : 실행할 크론 명령 수정 crontab -l : 실행할 크론 명령 확인 crontab -r : 크론 명령 제거 수행할 작업 설정 명령어 * * * * * hello.sh --> 1분마다 hello.sh를 실행 0 4 * * * hello.sh --> 매일 04시에 hello.sh를 실행 0 4 * * 1-5 hello.sh --.. 2023. 12. 8.
테스트 도구 Junit 목차 junit을 잘 활용하면 브라우저에 접속하지 않아도 테스트를 할 수 있다. Library 설정 Junit Library추가 junit junit 4.12 test spring-test Library추가 org.springframework spring-test 5.2.25.RELEASE test 테스트 파일 생성 및 실행 테스트 파일 생성 src/test/java에 테스트파일을 생성한다 클래스명으로 Test라는 이름을 쓰면 안된다 Junit의 anootation명이 Test이기 때문에 에러가 난다! import org.junit.Test; public class tempTest { @Test public void test() { System.out.println("실행하고자 하는 테스트메소드 작성").. 2023. 12. 7.
Interceptor 목차 Interceptor의 개념 쇼핑몰 사이트를 만들 경우, 장바구니, 찜하기, 주문 페이지에 들어가려면 반드시 로그인이 되어있어야 한다. 이때 아래 코드와 같이 각 맵핑 메소드마다 session을 체크해 접속을 체크할 수도 있다. @GetMapping("/member/regist.do") public String regist(HttpSession sess) { /* 로그인 여부 체크 */ if(sess.getAttribute("loginSess") == null) return null; return "member/write"; } 그러나 이 경우 장바구니, 찜하기, 주문 페이지 등 로그인을 요구하는 모든 페이지에서 Session을 체크하는 코드를 추가해야 한다. 이렇게 모든 메소드에 Session체크.. 2023. 12. 5.