본문 바로가기

더 나은 엔지니어가 되기 위해

(80)
[더 자바] JVM 이해하기 인프런에서 백기선님의 더 자바, 코드를 조작하는 다양한 방법을 공부하며 개인적으로 정리한 글입니다. JVM, JRE, JDK, Java 4개를 좀 구분해서 알아놓을 필요가 있다. JVM (Java Virtual Machine) .class 파일을 OS 에 맞는 machine code 로 변환 (인터프리터 & JIT 컴파일러) 플랫폼(OS) 에 종속적 JRE (Java Runtime Environment) JVM + 핵심 라이브러리 개발 관련 x. 실행 관련 o java 는 보통 JRE 단위로 배포됨 JDK (Java Development Kit) JRE + 개발 툴(java c) 자바 11부터는 JDK 단위로 배포됨. Java 소스 코드(java 언어) 자체는 플랫폼에 독립적 javac 에 의해 .cla..
[스프링 프레임워크 핵심 기술] 데이터 바인딩 추상화 인프런에서 백기선님의 스프링 프레임워크 핵심 기술 을 공부하며 개인적으로 정리한 글입니다. 데이터 바인딩 데이터 바인딩은 넘어오는 값을 동적으로 객체에 할당(바인딩) 해주는 것을 의미한다. 이번 포스팅에서는 데이터 바인딩을 어떻게 하고, 어떻게 동작하는지에 대해 알아본다. PropertyEditor PropertyEditor 를 사용해서 바인딩하는 방법을 알아보자. 먼저, 바인딩 시킬 객체와 값을 입력받는 컨트롤러를 정의하자. public class Event { private Integer id; private String title; public Event(Integer id) { this.id = id; } ... getter, setter and toString ... } @RestControll..
[스프링 프레임워크 핵심 기술] Resource / Validation 추상화 인프런에서 백기선님의 스프링 프레임워크 핵심 기술 을 공부하며 개인적으로 정리한 글입니다. Resource 추상화 애플리케이션에서 사용하는 리소스 인터페이스. Resource 라는 인터페이스로 추상화 되어있으며, 기본적으로 java.net.URL 을 스프링 프레임워크에 맞게 추상화 한 것이다. 1) 주요 메쏘드 기본적으로 다음과 같은 메쏘드가 구현되어 있다. InputStream getInputStream() boolean exists() boolean isOpen() String getDescription() 2) 구현체 Resource 를 구체적으로 구현한 클래스는 다음과 같다. UrlResource java.net.URL 을 참고. http, https, ftp, file, jar 지원 ClassP..
[스프링 프레임워크 핵심 기술] IoC 컨테이너 3 인프런에서 백기선님의 스프링 프레임워크 핵심 기술 을 공부하며 개인적으로 정리한 글입니다. MessageSource MessageSource 객체는 다국어에 관련된 메시지 포매팅을 해주는 역할을 담당한다. 다음 예를 살펴보면 쉽게 이해가 간다. 먼저 다음과 같은 프로퍼티 파일들을 정의하자. # messages.properties greeting = Hello, {0} # messages_ko_KR.properties greeting = 안녕, {0} 이후 다음과 같은 Runner 를 만들자. @Component public class AppRunner implements ApplicationRunner { @Autowired MessageSource messageSource; @Override publi..
[스프링 프레임워크 핵심 기술] IoC 컨테이너 2 인프런에서 백기선님의 스프링 프레임워크 핵심 기술 을 공부하며 개인적으로 정리한 글입니다. Profile Profile 은 빈들의 그룹이다. 예를 들어, 테스트 환경에서는 A 라는 빈을 사용하고 싶고, 배포 환경에서는 B 라는 빈을 사용하고 싶을 때, Profile 을 통해 이러한 설정을 잡아줄 수 있다. 정의 @Profile("이름") 을 통해 정해줄 수 있다. @Repository @Profile("test") public class TestBookRepository implements BookRepository { } @Repository @Profile("prod") public class ProdBookRepository implements BookRepository { } 사용 설정 예를 들어..
[스프링 프레임워크 핵심 기술] IoC 컨테이너 1 인프런에서 백기선님의 스프링 프레임워크 핵심 기술 을 공부하며 개인적으로 정리한 글입니다. 스프링 IoC 컨테이너 IoC (Inversion of Control) 는 의존 관계 주입이라고 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는 것이 아니라, 주입 받아 사용하는 방법을 말한다. IoC 컨테이너는 스프링에서 쓰이는 여러 객체들을 생성, 관리하는 객체다. 여기서 IoC 컨테이너가 관리하는 객체들을 빈 이라고 한다. IoC 컨테이너 내부적으로, BeanFactory 객체를 통해, 빈 설정 소스로부터 빈 정의를 읽고, 빈을 구성 및 제공한다. 다음과 같이 객체를 의존성 주입을 통해 받고 싶으면, 해당 객체가 IoC 컨테이너에 등록되어 있어야 한다. @Autowired BookReposito..
[스프링 부트 개념과 활용] 스프링 어드민 인프런에서 백기선님의 스프링부트 개념과 활용 강의를 듣고, 개인적으로 공부하며 핵심만 정리한 글입니다. 스프링 REST 클라이언트 해당 내용은 pass. 추후 더 심도깊게 제대로 공부해야 할 듯. 스프링 Actutator 와 Admin 스프링 Actutator 를 이용하면 현재 스프링 부트의 여러 정보들 (프로세스 수, 쓰레드 수, 가용 메모리 등등)을 알 수 있다. jconsole 이나 actutator 브라우저 등으로 정보들을 볼 수 있지만, 가장 이쁘게 표현해주는 것이 바로 spring-boot-admin-starter 다. 이 패키지는 스프링 부트의 자동설정 목록에 없으므로, 직접 버전을 명시해줘야 한다. 여기서는 스프링부트 2.2.4 RELEASE 버전으로 진행한다. 외부 라이브러리다 보니, 스..
[스프링 부트 개념과 활용] 스프링 시큐리티 인프런에서 백기선님의 스프링부트 개념과 활용 강의를 듣고, 개인적으로 공부하며 핵심만 정리한 글입니다. Spring-Security 먼저 Spring Security 를 적용하면 어떻게 되는지 살펴보자. 1) dependency 추가 org.springframework.boot spring-boot-starter-security 2) 테스트를 위한 파일 작성 Thymeleaf 를 이용해 간단한 테스트 페이지를 만들어보자. org.springframework.boot spring-boot-starter-thymeleaf hello @Controller public class HomeController { @GetMapping("/hello") public String hello() { return "hel..