본문 바로가기

BackEnd15

[Spring] 스프링(Spring) 핵심 기술 이야기 2부 - @Autowire 이 글은 백기선 님의 스프링 프레임워크의 핵심 기술 강의를 듣고 복습 차원에서 적은 글입니다. @Autowired 필요한 의존 객체의 "타입"에 해당하는 빈을 찾아 주입한다. 다음 위치에 사용할 수 있다. @Service public class BookService { // 필더 @Autowired BookRepository bookRepository; // 생성자 (스프링 4.3 부터는 생략 가능) @Autowired public BookService () { } // Setter // @Autowired(required = false) -> 의존성 주입이 되지 않아도 어플리케이션이 구동된다. @Autowired public void setBookRepository(BookRepository bookR.. 2020. 9. 16.
[JPA] 스프링 데이터 JPA 이야기 1부 이 글은 백기선 님의 스프링 데이터 JPA 강의를 듣고 복습 차원에서 적은 글입니다. 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 책을 읽고 복습 차원에서 적은 글입니다. JPA를 공부하기 전에 일단 기존의 SQL 직접 작성할 때의 문제점은 무엇일까? 반복적인 코드가 너무 많다. 게시판을 만든다고 가정했을 때 우리는 등록, 조회, 수정, 삭제를 만들어야 한다. 이러한 비슷한 작업을 지속적으로 해야 한다. SQL에 의존적인 개발을 해야 한다. 방금 위에서 만든 게시판에 칼럼 하나를 추가해야 한다면 우리는 등록, 조회, 수정, 삭제 SQL에 모두 반영을 해야 한다. SQL문법이 각 데이터베이스마다 다르다. 그래서 위의 문제점을 개선하기 위해서 관계형 데이터베이스 모델을 객체 모델 중심으로 바꾸려.. 2020. 9. 16.
[Java] JUnit5 애플리케이션을 테스트하는 다양한 방법 이야기 1부 - Assertion 이 글은 백기선 님의 더 자바, 애플리케이션을 테스트하는 다양한 방법 강의를 듣고 복습 차원에서 적은 글입니다. TDD(TEST-Driven Development) 테스트 주도 개발을 하는 곳이 많이 늘어나면서 테스트에 대한 확실한 공부가 필요하다고 생각했다. 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크 JUnit에 대해서 공부하겠다. JUnit은 자바 8 이상 가능한 JUnit5를 중심으로 공부하겠다. testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } JUnit5 = JUnit Platform.. 2020. 9. 15.
[Spring] 스프링(Spring) 핵심 기술 이야기 1부 - IoC 이 글은 백기선 님의 스프링 프레임워크의 핵심 기술 강의를 듣고 복습 차원에서 적은 글입니다. Inversion of Control은 의존 관계 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는 게 아니라, 주입받아 사용하는 방법을 말한다. 스프링 IoC 컨테이너 스프링 IoC 컨테이너의 핵심은 ApplicationContext, BeanFactory이다. 실제로 스프링 컨테이너 또는 IoC 컨테이너라고 말하는 것은 바로 ApplicationContext 인터페이스를 구현한 클래스의 오브젝트다. ApplicationContext는 BeanFactory를 상속받고 있다. 그렇다면 IoC컨테이너의 핵심 역할은 무엇일까? 핵심 역할은 빈 설정 소.. 2020. 9. 10.
[Java] 가비지 컬렉션(GC, Garbage Collection) 이란? GC란 동적으로 할당된 메모리에서 사용하지 않는 객체를 수집하는 역할을 한다. 메모리가 가득 차게 되면 OutofMOutOfMemmory Exception이 발생한다. 앞서 JVM 메모리 구조에 대해서 공부했다면 동적 할당되는 메모리 부분은 Heap메모리 영역이라는 것을 알고 있을 것이다. 그렇다면 Heap 메모리 구조를 살펴보자! Eden 영역부터 Sevior 영역까지를 Young 영역이라고 한다. 즉, 크게 Young, Old, Perm 3가지 영역으로 나누어진다. [참고] JDK8부터는 Perm영역이 MetaSpace영역으로 대체되었다. MetaSpace영역은 Native 메모리를 사용하여 동적으로 공간을 확보하는 것으로 판단된다. 그렇다면 Heap 메로리 구조 안에서 객체는 어떻게 이동하는 것일까.. 2020. 9. 10.
[Java] 자바 가상 머신(JVM, Java Virtual Machine) 이란? JVM은 사전적 의미로 자바 바이트코드를 실행할 수 있는 주체다. JVM의 장점으로는 각 플랫폼에 독립적이다. JDK를 설치하기 위해서 OS에 맞는 파일을 찾아서 설치하는 것만으로도 알 수 있다. 그렇다면 JDK에 JVM이 포함되어 있나? 그렇다. JDK = JRE + Development Tools JRE = JVM + Library Classes 사실 JVM을 면접에서 또는 누군가 물어봤다면 다음 그림의 Runtime Data Areas의 역할을 제대로 알고 있는지가 궁금한 거라고 생각된다. Method Area : JVM 시작 시 생기는 영역으로 바이트코드가 저장된다. 클래스 정보, 변수 정보, static으로 선언한 변수가 저장되며 모든 스레드가 공유하는 영역이다. Heap : 동적으로 생성된 객.. 2020. 9. 8.