1. 스프링 빈이란? 스프링 빈이란 Sping IoC 컨테이너가 관리하는 자바 객체를 말한다. 우리가 알던 기존의 Java Progrmming 에서는 Class를 생성하고 new를 입력하여 원하는 객체를 직접 생성한 후에 사용했다. 하지만 Spring에서는 new를 이용하여 직접 객체를 생성하지 않고 Sping에 의해 관리당하는 자바 객체를 사용한다. 이렇게 Spring에 의해 생성되고 관리되는 자바 객체를 빈이라고 한다. 2. 스프링 빈 등록 방법 2가지 1. 컴포넌트 스캔과 자동 의존 관계 설정 @Component, @Controller, @Service, @Repository 와 같은 어노테이션을 사용하여 스프링 빈에 등록할 수 있다. @Autowired 를 이용하면 의존 관계를 자동으로 설정할 수..
(인프런) 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 공부하고 리뷰한 글입니다. 스프링 빈을 등록하는 2가지 방법 1. 컴포넌트 스캔과 자동 의존 관계 설정 2. 자바 코드로 직접 스프링 빈 등록하기 여기서는 2번 방법으로 스프링 빈을 등록하고 의존 관계를 설정하였다. 자바 코드로 직접 스프링 빈을 등록하는 방식은 @Service, @Repository, @Autowired 어노테이션을 사용하지 않고 스프링 빈을 등록하고 의존 관계를 설정하는 클래스를 따로 만들어 관리하는 방식이다. 향후 메모리 리포지토리를 다른 리포지토리로 변경할 예정이므로 컴포넌트 스캔 방식 대신에 자바 코드로 스프링 빈을 설정하도록 한다. 1. 저번 포스팅에서 했던 컴포넌트 스캔, 자동 의..
1. null과 관련된 문제 null과 관련된 문제들을 크게 2가지로 요약해보면 1) 런타임에 NPE(NullPointerException)라는 예외를 발생시킬 수 있다. 2) NPE 방어를 위해서 들어간 null 체크 로직 때문에 코드 가독성과 유지 보수성이 떨어진다. 이렇게 null과 관련된 문제들로 인하여 Optional이 등장하게 되었다. 2. Optional 이란? Java8에서 Optional는 null이 올 수 있는 객체를 감싸는 Wrapper 클래스로, 참조하더라도 NPE가 발생하지 않도록 도와준다. Optional을 최대 1개의 원소를 가지고 있는 특별한 Stream이라고 생각하면 편하다. Optional 클래스는 아래와 같은 value에 값을 저장하기 때문에 값이 null이더라도 바로 ..
1. Stream 이란? Java8부터 지원하는 Stream은 컬렉션, 배열 등에 저장되어 있는 요소들을 하나씩 참조하며 반복적인 처리를 가능하게 하는 기능이다. Stream을 사용한다면 불필요한 for문과 if문 등의 분기처리를 쓰지 않고 깔끔하고 직관적인 코드로 변형할 수 있다. 2. Stream 특징 1) Stream은 원본 데이터를 변경하지 않는다. - 원본 데이터로부터 데이터를 읽기만 할 뿐, 변경은 하지 않는다. 2) Stream은 일회용이다. - 한 번 사용하면 닫혀서 재사용이 불가능하다. 필요시 정렬된 결과를 컬렉션이나 배열에 담아 반환할 수 있다. 3) Stream은 작업을 내부 반복으로 처리한다. - 내부 반복을 통해 간결한 코드를 작성할 수 있다. (내부반복이란 반복문을 메서드 내부에..
1. Map 이란? Map은 Key-Value 쌍으로 이루어진 자료형이다. Map은 리스트나 배열처럼 순차적으로 해당 요소 값을 구하지 않고 Key를 통해 Value를 얻는다.(순서가 없음) 값(Value)은 중복될 수 있지만, Key는 고유한 값(Unique)을 가져야 한다. 2. HashMap 이란? HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션입니다. Map 인터페이스를 상속하고 있기에 Map의 성질을 그대로 가지고 있다. HashMap은 이름 그대로 해싱(Hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는 데 있어서 뛰어난 성능을 보인다. ▶ HashMap 변수명 = new HashMap(): HashMap 생성 // key: Integer, value: String..
(인프런) 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 공부하고 리뷰한 글입니다. 1. 회원 도메인과 리포지토리 만들기 1. 회원 객체 1) domain 패키지 생성 2) domain 패키지에 Member 클래스 생성 3) 회원 객체(Member) 코드 작성 package hello.hellospring.domain; public class Member { private Long id; // 단순히 데이터 구분을 위해 사용(실제 회원 id가 아님) private String name; // 회원 이름 public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Strin..