728x90
- 알고리즘 문제 풀기
스트림을 이용해 배열 -> 리스트 변환하기
배열을 리스트로 변환하기 위해 .toList() 스트림을 쓰려고 했는데 오류가 발생했다.
배열은 int[] 배열인데 리스트의 값은 Integer 타입이기 때문이다.
검색해보니 중간에 .boxed()를 추가해서 박싱한 후 리스트로 변환해줘야 했다.
List<Integer> list = Arrays.stream(arr).boxed().toList();
- 스프링 bean
스프링 강의를 들으면서 bean에 대해 배우게 되었다.
스프링에서 Controller, Service, Repository 이렇게 세 개의 레이어로 나누는 과정에서
외부에서 미리 만든 객체를 주입함으로써 의존성을 역전시켜 코드의 유지보수성을 높인다는 내용을 배웠는데
그 과정에서 Spring 프레임워크가 필요한 객체를 생성하고 관리하며 이러한 객체를 Bean이라고 부른다고 한다.
해당 내용의 강의를 들으면서 이전 팀 과제에서 코드의 패키지를 Service, Database, Output으로 나누었고
Database인 클래스들을 싱글톤 패턴으로 설계했던 것이 생각이 나서 이해가 잘 되었다.
그런데 그렇다면 스프링 bean과 싱글톤 패턴의 개념이 비슷해보이는데 무슨 관계인지 궁금해졌다.
검색해보니 나와 비슷한 궁금증을 가지고 내용을 정리하신 분의 블로그를 보게되었다.
위 블로그에 따르면
- 자바 레벨 싱글톤 처리 : 클래스 로더 안에서 싱글톤 보장
- -> 미리 인스턴스를 만들어 메모리 낭비가 될 수 있고 static이라 테스트 어려움
- 스프링 레벨 싱글톤 처리: 스프링 컨테이너 안에서 싱글톤 보장
- -> 관리가 용이
이렇게 정리되어 있었다.
보면 스프링에서는 bean이라는 개념을 통해 객체를 싱글톤으로 구현 및 사용하고,
이는 자바 레벨에서 (이전에 내가 했던 것처럼) 싱글톤을 구현하는 것보다 더 관리가 용이하다고 한다.
'TIL' 카테고리의 다른 글
[231106] 알고리즘 문제, 스탠다드반 과제 (0) | 2023.11.06 |
---|---|
[231103] Spring 개인과제 (0) | 2023.11.03 |
[231101] 스트림을 배열로 변환, POST와 GET의 차이 (0) | 2023.11.01 |
[231031] Spring 입문 (0) | 2023.10.31 |
[231030] 팀 프로젝트 KPT 회고 (0) | 2023.10.30 |