본문 바로가기

spring-boot-starter-data-redis 사용기, get/set 예제와 pub/sub 예제 간단하게 만들고 테스트해봤습니다. spring boot에서 redis 사용하는 방법 지난 포스트 중 자바에서 redis(Jedis)를 사용한 포스트가 있었다.jedis 라이브러리를 직접 불러와서 사용했었지만 이번에는 spring boot에서 starter로 제공하는 라이브러리로 사용하는 것을 해봤다.이것 또한 jedis를 사용하는 것과 다르지 않다.spring에서 redis와 관련한 라이브러리를 추상화시켜서 사용할 수 있게 해준 것이다.무슨말이냐면 자바에서 주로 사용하는 redis 라이브러리로는 jedis와 lettuce가 있다.두 라이브러리를 공통으로 추상화해서 둘 중에 어떤 것을 쓸 것인지는 설정을 통해 사용할 수 있게 하는 것이다.바로 사용해본다.Get, Set Redis는 In Memory key/value Database로 No..
New로 생성한 Instance에서 Bean이 필요할 때 @Autowired 대신 Bean 주입 받는 방법(Spring boot에서 ApplicationContext를 가져와서 넣어버리기) Spring boot에서 Bean 주입 받기 일반적으로 많이 사용하는 WebApplication을 개발하다보면 자연스럽게 @Repository, @Service, @Controller, @Component, ...등을 이용해서 bean으로 등록하고 Bean으로 등록되는 클래스에서 @Autowired로 주입받아 사용하곤 한다. 그런데 스프링으로 애플리케이션을 개발하다보면 Bean이 아닌 클래스에서 Bean을 주입받을 필요가 있을 때가 있다.static 메서드에서 필요하든지 new로 생성한 인스턴스에서 Bean을 참조해야한다든지 하는 경우다.이럴 때 스프링을 기초부터 배웠다면 쉽게 해결할 수 있다.@Autowired 애노테이션 자체가 spring IoC Container(ApplicationContext)에..
자바 Comparable, Comparator 하면 '정렬'을 떠올려라, 자바 객체 정렬의 '기준'을 정하는 방법! (비교랑 다릅니다!) Java Comparable, Comparator Comparable, Comparator 가 무엇인지 알아보기 전에 확실히 해야할 것이 있다.Comparable, Comparator하면 '정렬'을 떠올려야하는 것이다.Compare 하면 "비교"고 Comparable하면 "비교 가능한" 이렇게 해석할 수 있기 때문에 "비교"가 먼저 떠오를텐데 이것을 가지고 같다 혹은 크다, 작다를 구분하는 단순 비교를 할 수 있는 것은 아니다.명확하게는 "정렬할 때 비교가 가능하다.", "정렬할 때 기준을 정할 수 있다." 가 맞다.단어적인 측면에서 보았을 때 오해할 수 있는 것을 알아봤다면, Comparable과 Comparator가 언제 어떻게 쓰는지 알아보면 좋을 것이다.우선 자바에서 객체를 정렬할 때 일정한 기준..
자바 equals(), hashCode(), == 연산자 비교 및 개념 정리하기(객체 비교 구문 커스터마이징하는 방법) 자바에서 각각 객체가 동일한지 확인하는 방법 자바 프로그래밍에서 객체가 동일한지 확인하는 분기문은 상당히 많이 작성할 것이다.예를 들면 '==' 연산자로 비교할 수도 있고 'equals()', 'hashCode()' 로 비교할 수도 있다.이제 앞에서 언급한 3개의 방법의 원리를 정리하고 적용해본다.== 연산자 == 연산자는 피연산자가 primitive type(int, double, boolean, ...)일 때는 값이 같은지 비교하고, 피연산자가 그 외 객체, reference type일 때 가리키는 주소가 같은지를 검사한다.12345678String str1 = "hello";String str2 = "hello";System.out.println(str1 == str2);//trueString st..
Spring AOP 스프링이 해줄건데 너가 왜 어려워 해? Spring boot에서 aop logging 사용법 제일 쉽게 알려드립니다! Spring AOP (Aspect Oriented Programming) - AOP는 관점 지향 프로그래밍으로 "기능을 핵심 비즈니스 기능과 공통 기능으로 '구분'하고, 공통 기능을 개발자의 코드 밖에서 필요한 시점에 적용하는 프로그래밍 방법"이다.위의 한 줄만 기억하면 된다.초보에게 Aspect, Advice, Pointcut, Weaving, Joinpoint, ... 이런거는 AOP를 이해하는데 방해하는 요소일 뿐이다. 추후에 AOP에 대해서 활용하고 싶고 깊이있게 이해하고 싶을 때 위에 나열한 것들에 대해서 공부해본다.스프링부트에서 초간단 AOP 적용하는 법 3단계1. spring-boot-starter-aop dependency 적용하기라이브러리는 있어야지.1234 org.springframew..
3가지만 기억하자. 스프링 부트 초간단 캐시 @EnableCaching, @Cacheable, @CacheEvict (spring boot cache example) 스프링 부트 캐시 적용하는 가장 쉬운 방법 스프링 부트에 캐시를 적용하고 싶으면 3가지만 기억하면 된다.@EnableCaching, @Cacheable, @CacheEvict1. "spring-boot-starter-cache" 라이브러리 불러온다.1234 org.springframework.boot spring-boot-starter-cacheColored by Color Scripter 2. 캐시 기능을 사용하고 싶은 프로젝트에 @EnableCaching을 쓴다.1234567@EnableCaching@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.ru..
Null Pointer Exception으로 고통 받았다면 Java Optional을 사용해보세요(더 쉽고 깔끔하게 처리할 거에요) Java8 Optional 자바8이 나온지도 3년이 되었고 오라클 JDK의 LTS 버전인 자바11도 나왔는데 웬 자바8의 기능을 소개하냐! 하는 분도 있겠지만, 이제서야 자바8을 도입하는 회사들도 많이 있고 제 공부를 위한 것이니 즐겁게 사용해봅시다.Optional은 Null Pointer Exception(이하 NPE) 처리를 돕는 Wrapper Class다.보통 자바 개발을 하면서 당연하게 객체(Object)를 만들어 사용한다.그런데 C,C++에서 사용하던 포인터를 감췄다는 자바에서도 객체에는 포인터를 사용한다. (reference)그렇기 때문에 모든 객체는 NPE에 대한 검사가 필요하고 방지하는 코드도 필요하다.12List list = getList();List listOpt = list != nu..
메이븐(Maven)은 알고 스프링(Spring)을 쓰는가? (pom.xml 분석하며 가볍게 정리하는 빌드 툴, Maven) 메이븐(Maven)은 알고 스프링(Spring)을 쓰는가? 제목과 같은 질문에 필자는 제대로 답변할 수 없었다.단순하게는 maven repository에서 dependency 추가해서 필요한 라이브러리 쓰는 정도?무엇을 위해 쓰는지, 왜 쓰는지, 어떻게 쓰는지에 대한 구체적으로 알지 못했다. 사실 지금까지 알 필요도 없었고, 초보 프로그래머의 기준에서는 Maven을 몰라도 대중적이면서도 다양한 라이브러리를 많이 접하고 써보면 "장땡"이었기 때문이었다.사실 지금도 자세히는 모른다.그러나, 조금 더 나은 프로그래머가 되기 위해서 maven에 대한 이해가 필요하다고 생각해서 정리한 것이다. ("maven을 빠삭하게 알아야 해!"가 아니라 "maven을 알아가는 길에 한 발자국을 떼보자!"다.)pom.xml을 ..