스트림(Stream)이란? FileInputStream과 같은 I/O 스트림과는 다른 개념이다. (I/O 스트림은 데이터 가져오기와 내보내기를 하는 일종의 통로 역할을 하는 것이다.) 스트림은 간단하게 한 줄로 요약하면 데이터 집합을 읽는 객체라고 생각하면 된다. 데이터들을 모두 읽는 객체인만큼 데이터들을 다루는데 공통적으로 쓰일만한 기능들(정렬, 필터링, 반복문 등)을 가지고 있다. list.stream().forEach(System.out::println); 참고로 스트림은 자바 8부터 지원하고 있다. 스트림(Stream) 특징 스트림은 Stream이라는 별도 객체로 기능을 이용할 수 있으며 3가지의 큰 특징이 있다. 이 특징들 때문에 컬렉션 함수를 사용하지 않고 스트림을 사용한다. 1. 데이터 소스..
자바로 코딩을 하다보면, 하다못해 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으로 등록되는 것이다. 이미 정의된 기본 객체를 재정의하거나 내가 만든 객체의 종속성을 위해 빈을 등록할 때 사용한다. 즉,..
- Total
- Today
- Yesterday
- 이클립스
- annotation
- 메시지큐
- postgres
- JPA
- mockito
- 어노테이션
- springboot
- Caching
- k8s
- ssh
- Spring
- 자바
- DATABASE
- rabbitmq
- 캐싱
- 캐시
- HttpClient
- 공간데이터
- Intellij
- enum
- DB
- 역직렬화
- PostgreSQL
- cache
- 스프링부트
- eclipse
- Java
- 데이터베이스
- MAC
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |