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