자바로 코딩을 하다보면, 하다못해 Map 컬렉션을 쓰다보면 아래와 같이 '' 안에 정확한 type을 명시하는 것을 볼 수 있다. 이것은 바로 제너릭(Generic)라는 것으로 자바에서 타입을 좀 더 유연하게 받고 사용하기 위한 기능이다. Map map = new HashMap(); 제너릭(Generic)이란? Map과 같이 Object 타입이면 또는 어떤 객체를 상속 받은 하위 객체이면 무조건 사용할 수 있을 때 해당 타입을 와일드카드와 같이 다양한 정해진 범위의 다양한 타입으로 유연하게 사용할 수 있도록 정의된 일종의 키워드 같은 것이다. 참고로 제너릭은 자바 5부터 사용 가능하다. 예를 들어 아래와 같이 클래스에서 특정 필드애 대해서 호출자가 정의한 타입으로 해당 필드를 사용하고자 할 때 사용할 수 ..
스프링으로 개발을 해본 사람이라면 @Controller와 @RestController 어노테이션을 둘 다 접해본 경험이 있을 것이다. 나 또한 프론트와 백엔드가 합쳐진 웹 개발을 할 때는 @Controller를, 백엔드 개발을 할 때는 @RestController를 사용해봤다. Restful API를 개발할 떄(백엔드 개발을 할 때는)는 @RestController를 사용한다기에 @RestContoller를 사용했는데, 그렇다면 @Controller와 @RestController의 차이점은 무엇일까? @Controller와 @ResponseBody가 합쳐진 @RestController @RestController가 뭐가 다른지는 어노테이션을 까보면 확실히 알 수 있다. @RestController 어노테..
개발을 하다보면, 개발 공부를 하다보면 DI라는 용어를 많이 접하게 된다. 거기에 덧붙여 DI 컨테이너, IoC이라는 용어도 많이 접하게 되는데 처음에 이러한 용어들을 접하고 가지 않으면 이게 뭐지? 라고 어리둥절하다가 해당 용어의 뜻을 알고 아 그렇구나 라고 바로 이해를 하게 된다. 그래서 이번에 제대로 해당 용어들에 대한 개념들을 정리해보려 한다. DI(Dependency Injection)이란? 우선 제일 기본적인 DI는 의존성 주입을 의미한다. 의존성 주입에 대해 제일 간단한 예를 들면 Controller에서 Service를 사용하는 것을 예로 들 수 있다. public class MenuController { private tinal MenuService menuService; ... } Con..
요즘 공부가 좀 소홀해진 것 같다... 기술 블로그 작성한지 얼마나 됐다고 이러는지;; 그래도 알고 배운 것들을 잊지 않기 위해서 꾸준히 기록해야겠다. 우리는 클래스를 정의할 때 보통 아래와 같이 생성자로 정의해 클래스를 다른 곳에서 new로 생성해 사용한다. public class Test { public Test(int x, int y) { ... } } 하지만 이와 같이 생성자를 통해 객체를 생성하는 방법은 몇 가지 단점을 가지고 있다. 생성자는 명명을 할 수 없어서 생성자 안에서 별도 전처리 로직이 있을 경우 해당 전처리에서 무엇을 하는지 이해는 해당 생성자 안까지 들어가서 확인을 해야 한다. 이럴 때 정적 팩토리 메소드(Static Factory Method)를 사용한다. 정적 팩토리 메소드(S..
https://pamyferret.tistory.com/8 [ SpringBoot ] SpringBoot의 기본 Cache 사용하기 개발을 하다보면 어라? 이 데이터 계속 똑같이 사용되고 업데이트 될 일이 없는데? 하는 것들이 보인다. 데이터 업데이트가 자주 이뤄지지도 않고 자주 호출되는 데이터인데 계속 DB에 가서 데이 pamyferret.tistory.com https://pamyferret.tistory.com/9 [ Redis ] Window에 redis 설치해서 사용하기 스프링 부트의 캐싱 기능을 사용하다보니 분산 캐싱 기능도 사용해보고 싶어졌다. 분산 캐싱에 사용할 캐시 데이터 저장 공간은 여러 가지를 사용하는데, 그 중 Redis라는 것을 사용해보려고 한 pamyferret.tistory.c..
스터디에서 작게 프로젝트를 생성해서 코딩을 하다보니 ApplicationContext라는 객체를 사용해서 해당 Interface Ben Type에 해당하는 모든 객체들을 아래와 같이 가져오게 되었다. private final ApplicationContext applicationContext; @PostConstruct public void init() { Collection makersCollection = applicationContext.getBeansOfType(Test.class).values(); ... } ApplicationContext를 통해서 Spring 컨테이너에 등록된 빈들을 가져올 수 있다는 것을 이해하고 이렇게 사용한 것이지만 ApplicationContext란 무엇일까? App..
개발을 하다보니 @Component 어노테이션을 많이 사용하게 되었다. 특히 팩토리 패턴에서는 팩토리 역할을 하는 객체 및 팩토리 객체에서 생성되는 객체들을 @Component 어노테이션을 붙여 빈 생성을 하게 되었다. 그러다보니 언뜻 들은 @Bean 어노테이션도 들었는데 빈을 생성하는데 @Bean과 @Component 어노테이션 둘의 차이 점은 무엇일까? 둘다 빈으로 등록되게 하고 관리되게 해주는 것이지만 살짝 차이 점이 있다. @Bean 외부 라이브러리 또는 이미 정의되어 있는 객체들이 서로 종속성을 가지고 있을 경우의 빈 등록에 사용하는 어노테이션이다. 반환 값이 바로 Bean으로 등록되는 것이다. 이미 정의된 기본 객체를 재정의하거나 내가 만든 객체의 종속성을 위해 빈을 등록할 때 사용한다. 즉,..
안드로이드 개발자는 아니라 웹 개발자지만 회사에서 안드로이드 개발도 1건을 했었어가지고 그곳에서 얻었던 지식들을 나중에 혹시 모르니 기록해봐야겠다. 안드로이드 개발을 처음 맡았을 때 기본으로 있어야했던 기능은 바로 자동 로그인 기능이었다. 보통 모바일 앱들을 보면 로그인은 한 번만 하고 자동로그인을 체크해놓으면 자동 로그인이 구현되도록 되어 있다. 그래서 내가 개발해야했던 프로젝트에서도 자동 로그인을 꼭 구현해야했다. 그 때 사용했던게 SharedPreferences 인터페이스였다. (참고로 나는 Kotlin이 아니라 Java로 안드로이드 앱 개발을 했다.) SharedPreferences 이란 해당 앱의 파일에 저장되는 데이터를 다룰 수 있는 인터페이스이다. 즉, 자동로그인 기능에서 뿐만 아니라 앱을 ..
- Total
- Today
- Yesterday
- PostgreSQL
- HttpClient
- Caching
- 캐시
- DATABASE
- mockito
- 자바
- 어노테이션
- annotation
- 스프링부트
- k8s
- DB
- MAC
- enum
- cache
- 이클립스
- rabbitmq
- 역직렬화
- Intellij
- JPA
- springboot
- Spring
- 캐싱
- 공간데이터
- eclipse
- postgres
- 메시지큐
- Java
- 데이터베이스
- ssh
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |