본문 바로가기
반응형

IT/Java394

[Jackson] JsonNode, ObjectNode, ArrayNode 이전 포스팅에서 jackson annotation에 대해서 다룬적이 있다. 자세한 내용은 아래 참고 포스팅을 참고 바란다. 자바 개발을 하다보면, 좀더 정확히 말하면 restapi를 사용하다보면 json 사용이 빈번하고 그러면서 jackson annotation을 주로 사용하게 된다. 이번 포스팅에서는 주로 사용되는 jackson 라이브러리에서 제공하는 객체인 JsonNode / ObjectNode / ArrayNode 에 대해서 다뤄볼 것이다. 먼저 각 노드를 생성하는 법에 대해서 다루면 ObjectMapper om = new ObjectMapper(); // JSON을 읽기, 쓰기, 변환 기능을 제공하는 객체 ObjectNode objectNode = om.createObjectNode(); // 빈.. 2023. 6. 6.
kafka 실습 (springboot에서 활용) 저번 포스팅에서 로컬 피시에 카프카를 설치 했다면 이번 포스팅에서는 springboot에서 직접 활용할수 있도록 셋팅을 해볼것이다. 실제로 개발을 하게 된다면 kafka서버는 어느 pod나 container 에 설치가 되어서 해당 서버와 토픽 주제만 알고 있다면, 이번 포스팅이 더욱 도움이 될것이다. 설치에 대해서는 아래 참고 포스팅을 참고 바란다. 먼저 카프카를 호출할 controller 를 만들었다. @Slf4j @CrossOrigin("*") @RestController @RequestMapping(value = "/kafka/test") public class KafkaController { private final KafkaProducer producer; @Autowired KafkaContr.. 2023. 6. 5.
custom annotation 활용 요즘 자바에선, 스프링에선 annotation에 대해서 많이 사용이 되고 없이는 개발이 많이 불편한 시대가 되어버렸다. 이전 포스팅에서 annotation에 대해서 많이 다뤘으니 참고를 하는것도 도움이 될것이다. 이번 포스팅에서는 aop를 사용할때 필자가 사용했던 custom annotation을 설명하려고 한다. aop 에 대한 내용 역시 아래 참고 포스팅을 참고하길 바란다.(pointcut에 annotation 설정하는 경우) annotation은 일단 interface 로 작동을 하게 된다. interface로 선언을 하니 당연한 내용이다. 그리고 annotation을 만들 interface를 만들어준다. @Retention(RetentionPolicy.RUNTIME) @Target(value = .. 2023. 6. 2.
SPRINGBOOT 에서 등록된 Bean 추출 이전 포스팅에서 applicationContext를 통해서 bean을 넣는것이랑 Bean에 대한 개념을 다룬글이 있다.자세한 내용은 아래 참고 포스팅을 참고 바란다. 이번 포스팅은 Springboot에서 서버를 기동 시키게 될때 Spring container는 bean을 모두 등록하는데 그 리스트를 출력을 하는방법을 다뤄보려고 한다. SpringBoot 프로젝트를 starter 를 통해서 생성을 할 경우Project명Application.java 파일이 자동으로 생성이 된다.그 안에는 package랑 기본적인 main 메서드가 들어가있다.아래와 같다.package com.명;import org.springframework.boot.autoconfigure.SpringBootApplication;@Spri.. 2023. 6. 1.
mybatis 에서 dto camel case 적용 java의 프레임 워크중 하나인 마이바티스 에 대한 설명은 아래 참고 포스팅을 참고 바란다. mybatis에서 데이터베이스를 연동하며 값을 dto에 담아오게 되는데, 그 값을 자바에서는 camel case를 주로 사용한다. camel case는 아래 참고 포스팅 참고, 문제는 db 에서 데이터를 가져올때 selectProvider 절에 쿼리가 있는데, dto 에서 camel 케이스를 맞춰주기 위해서는 모두 alias 를 사용하여 camel케이스로 작성을 해야했다. select USER_NAME as userName, USER_AGE as userAge 이런식으로 말이다. 이럴경우에 property 에 mybatis: configuration: map-underscore-to-camel-case: true.. 2023. 5. 29.
@Data annotation 과 getter 의 관계(23.05.24) 자바에서 Dto를 사용하게 될 경우 lombok 에서 제공하는 Data annotation을 많이 사용하곤 한다. 예전 개발자 들이라면 getter / setter 를 구현하기 위해서는 직접 코드에 메서드를 작성해야했다. 현재는 Data annotation 안에 있는 @Getter / @Setter 가 이 기능을 편리하고 빠르게 대체해준다. 하지만 기본적으로 getter / setter annotation은 return 이 단순 return이고 값을 가공하기 위해서는 별도의 메서드를 지정해줘야한다. 물론 코드에 녹여낼수도 있지만, return 값이 null일때는 "" 을 내뱉어주고 싶을때는 아래와 같이 getter 메서드를 명시할수 있다. public String getId() { return id==n.. 2023. 5. 25.
aop pointcut 정리(추가 정리) 이전 포스팅에 이어 좀더 심화 정리를 추가하려고 한다. 1. 여러개의 execution 정의 -> 표현식을 사용한다. and 는 && , or 는 || 등을 사용하여 @Before("execution(* com..*.*(..)) && @annotation(org.apache.ibatis.annotations.Mapper)") 이와 같이 정의해준다. 2. 호출된 메서드에 대한 정보 -> System.out.println("location Name :" + jp.getTarget().getClass().getName()); System.out.println("method Name :" + jp.getSignature().getName()); System.out.println("uri Name :" + req.. 2023. 5. 15.
aop pointcut 정리 저번 포스팅에서 aop 설정법에 대해서 다룬적이 있다. 자세한 내용은 아래 참고 포스팅을 참고 바란다. 사용법은 다음과 같다. 먼저 @Aspect를 선언할 클래스를 만들어준다. @Aspect @Component public class AopTracker { .... 코드 구현 } @Component 역시 spring bean 주입을 위해 작성을 해줘야한다. 그리고 이어서 aspect 내에서 실행 할 메서드를 만들고 그 메서드에 아래와 같은 annotation을 달아준다. annotation 사용(호출) @Pointcut 어떤 메서드 일때 @Before 메서드 실행 전 @After 메서드 실행 후 @AfterReturning 메서드 정상 실행후 @AfterThrowing 메서드 실패 실행후 @Around .. 2023. 5. 14.
springboot AOP 설정하기 자바에서 aop 에 대해서 이전 포스팅에서 다룬 글이 있다. 자세한 사항은 아래 참고 포스팅 참고 바란다. 이번 포스팅에서는 springboot 에 aop 설정하는법에 대해서 다뤄 볼것이다. 개발 환경 springboot 3.0.5 maven 1. 우선 해당 라이브러리를 받아오기 위해 pom.xml 에 아래 dependency 를 추가한다. org.springframework.boot spring-boot-starter-aop 2. 다음은 maven 프로젝트 내에 main 메서드에 aop 사용을 위한 annotation 을 설정 해야한다. @EnableAspectJAutoProxy @SpringBootApplication public class AopProjectApplication { public st.. 2023. 5. 13.
반응형