728x90

분류 전체보기 224

[원주]구룡사

원주 구룡사 사실 반곡동은 원주에서도 저 아래쯤 돼요 원주에서 구룡사에 가신다면 41번 혹은 41-2노선일거에요 원주에서 느낀바로는 전자정보보단 시간표를 믿으세요 스마트폰보다가 낭패본경험많은데 시간표 칼같음! 입구에 위치한 불전함에 돈넣고 기도했어요 구룡사는 규모가 큰 사찰은 아니에요 오히려 엄청 조용해요 고즈넉하죠 전 완전한 불교는 아니지만 한국에 가장많다는 불교는 아니지만 절에 자주가는 사람이에요소원등을 달 수 있어요 지키는 사람없이 투명한 함이 있어요 사람들의 희망들이 매달려있어요 제눈에는 저 희망들 내일에 대한 기대들이 가득해서 좋네요 내일에 대한 바람들 세시반인가? 왔는데 어둑어둑해서 세렴폭포는 포기했지만 맑은 이 물은ㅋㅋㅋ. 남겼어요구룡사에서 주차장까지는 얼마걸리지않아요 가는 버스 시간까지 시..

카테고리 없음 2023.12.03

하루이틀사흘나흘 하나둘셋넷

뉴스를 보고 깜짝 놀랐다 초등학교인가 중학교 교과서에 나와서 아예 다 외우고 이후로는 헷갈리지 않았던건데 생각보다 많이 쓰이는데 자꾸 논란이 되니 누군가 노래에 가사로 쫌 붙여보고 싶다 송창식님의 가나다를 잇는 하루이틀사흘나흘 1일-하루2일-이틀3일-사흘4일-나흘5일-닷새6일-엿새7일-이레8일-여드레9일-아흐레10일-열흘15일-보름 보통 열하루 열이틀까지는 잘 안쓰고 그믐께 이런 것도 평시에는 안쓰니 이것만 외워도 평시에 잘 알아듣지 않을까 이게 날을 세는 거니까 수량을 셀 때 하나 둘 셋 넷 다섯 여섯 일곱 여덟 아홉 열 로 세듯이 하루 이틀 사흘 나흘 닷새 엿새 이레 여드레 아흐레 열흘 의 흐름인데 그냥 하루이틀사흘나흘닷새엿새 이레 여드레 아흐레 열흘 만 외우자.

일상기록 2023.05.04

[spring] 스프링부트의 로그 시스템

스프링부트의 로그 시스템 스프링부트는 기본라이브러리에 slf4j 라는 로그 인터페이스를 가지고 있다. 이는 스프링 부트가 다양한 로그라이브러리를 스프링에서 사용할 수 있도록 하기 위함이다. 개발자가 다른 로그 구현체 라이브러리를 사용할수도 있고 기본으로 스프링부트가 제공하는 logback을 사용할 수 있다. 로그 선언 org.slf4j.Logger; org.slf4j.LoggerFactory; private final Logger log = LoggerFactory.getLogger(getClass()); slf4j의 LogFactory로부터 getLogger를 통해 로거를 받으면된다. 롬복을 사용할 경우 별도로 인스턴스를 생성할 필요없이 @slf4j애노테이션을 클래스에 붙이면된다. 로그 출력내용 로그라..

[디자인패턴] 템플릿 메서드 패턴

템플릿 메서드 패턴은 공통된 처리를 여러 코드에서 사용하고 싶을 때 사용한다. 만약에 A클래스, B클래스, C클래스의 기능 전후에 시간을 로그로 찍고 싶다면 물론 각 기능마다 로그를 찍어도 되지만, 중복이 많아지고 후에 변경이나 삭제를 해야한다면 몇개를 빼먹는다던지, 일관되지 못한 변경이나 실수가 있게 된다. 추상클래스를 활용 추상클래스는 하나 이상의 추상메소드를 가진 클래스이다. 어떤 공통된 기능은 정의해놓고 각자의 기능은 추상클래스를 오버라이딩할 수 있다. 이 경우 A,B,C가 추상클래스를 상속받고, 추상메소드에 A,B,C의 각자의 핵심기능을 정의해 놓고 템플릿메소드에 공통처리와 추상메소드를 부르는 코드를 넣는다. 그리고 각 기능을 실행할 때 템플릿 메소드를 부르면 공통처리와 각각의 핵심코드를 함께 ..

[스프링] 스프링 빈으로 등록된 컴포넌트의 동시성문제 (쓰레드로컬)

예전에 나와 신입사원 2명이 한 달예정 프로젝트에 투입된 적이 있었다. 이 프로젝트가 아주 소규모에 한 달이라는 프로젝트였던 것은 이미 어느정도 개발이 된 상태의 프로젝트여서 였다 다만 엔티티와 dto의 변수명이 일본어여서 이것을 영문으로 바꿔달라는 의뢰였다. 분명히 이미 돌아간다고 했는데 받고나서보니 내부가 뒤죽박죽이었다. 컨트롤러에서 직접 sql을 날리는데 서비스와 리파지토리는 따로 있어 코드를 파악하기 힘들었다. 컨트롤러와 서비스와 리포지토리의 구분은 진짜 개발자들의 피땀의 산물이라 느꼈다. 규칙을 지키는 코드는 이후 수정할 개발자에 대한 배려와 매너임을 알았다. 이중에서 심각한건 바로 컨트롤러 필드의 접근시간을 가지고 화면의 최신화를 확인한다는 점이었다. 이 프로젝트는 관리자용 시스템이라 동시에 ..

[spring] 스프링 AOP는 언제 사용하지

스프링은 DI, AOP이 핵심이다. 이중 AOP 관점지향프로그래밍이란 무엇일까? 보통 프로그래밍을 할 때 흐름은 기능의 처리 순서이다. HTTP 요청을 서블릿이 받아 url 리퀘스트 매핑을 통해 적절한 컨트롤러로 연결해주면 컨트롤러에서 비지니스로직을 호출하고 결과를 반환해 화면으로 돌려준다. 그런데 때때로 이 처리 순서의 흐름이 아니라 어떤 특정 시점에서 공통된 처리를 해주고 싶을 때가 있다. 나 같은 경우 로그나 시간을 측정할 때 사용해봤다. 포인트컷을 지정하면 실행 전후의 로그를 남길 수 있는데 여기서 시작시간과 처리종료시간을 계산하면 처리시간을 구할 수 있다. 각 처리에 하나하나 로그와 시간을 계산하지 않아도 된다. 우리에겐 스프링 AOP가 있으니까 스프링 AOP는 스프링 빈을 등록할 때 프록시를 ..

[spring] spring AOP

스프링 AOP Aspect oriented Programming 관점지향 프로그래밍 스프링 AOP란 관점지향 프로그래밍을 말한다. AOP가 필요한 이유 핵심기능과 부가기능 핵심기능 REST API를 보면 resource의 표현을 통해 통신을 하는데 보통 해당 리소스의 어떤 처리를 하게된다. 해당 처리, 즉 해당 요청에 대한 기능을 핵심기능이라고 한다. 예를 들어 POST방식으로 주문 데이터를 전송한다면 해당 리퀘스트의 핵심기능은 주문의 등록일 것이다. 부가기능 그러나 우리가 로직을 짤 때 해당기능을 수행하기 위해 부가되는 기능이 있다. 예를 들어 로그를 남긴다거나, 처리시간을 넣거나 혹은 DB와 통신을 위한 코드이다. 반복되는 부가기능 로그를 남기거나 처리시간을 계산하는 로직이 하나의 핵심기능의 객체에만..

728x90