본문 바로가기

더 나은 엔지니어가 되기 위해/지금은 안쓰는 자바

(35)
[스프링 프레임워크 핵심 기술] 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..
[스프링 부트 개념과 활용] 데이터 4. Redis, MongoDB, Neo4j 인프런에서 백기선님의 스프링부트 개념과 활용 강의를 듣고, 개인적으로 공부하며 핵심만 정리한 글입니다. Redis 사용법 1) dependency 추가 pom.xml 에 라이브러리를 추가하자. org.springframework.boot spring-boot-starter-data-redis 2) Redis 띄우기 docker 로 Redis 컨테이너를 띄우자. $ docker run -p 6379:6379 --name redis_boot -d redis 컨테이너가 만들어졌으면, 다음 명령어로 접속하자. $ docker exec -i -t redis_boot redis-cli 3) Redis 연동하기 이제 코드 단에서 Redis 에 접근해보자. 바로 실행가능한 코드를 위해 ApplicationRunner ..
[스프링 부트 개념과 활용] 데이터 3. DB 초기화, 마이그레이션 인프런에서 백기선님의 스프링부트 개념과 활용 강의를 듣고, 개인적으로 공부하며 핵심만 정리한 글입니다. 데이터베이스 초기화 1) JPA 를 이용한 초기화 Entity 와 JPA Repository 만 설정해놓으면, 테스팅 코드에서는 테이블이 생성되어 잘 돌아가지만, Application 을 구동하면 그렇지 않다. 애초에 테이블 생성하는 코드가 없어서 그렇다. 따라서 Application 구동 시, 테이블을 생성하거나 혹은 수정하거나, 검증하거나 하는 등의 일을 설정해줄 필요가 있는데 application.properties 에서 이를 설정해줄 수 있다. spring.jpa.generate-ddl=true spring.jpa.hibernate.ddl-auto=create 위와 같이 설정값을 주면, Appl..
[스프링 부트 개념과 활용] 데이터 2. JPA 인프런에서 백기선님의 스프링부트 개념과 활용 강의를 듣고, 개인적으로 공부하며 핵심만 정리한 글입니다. JPA 사용법 1) Dependency 추가 pom.xml 에 spring-boot-starter-data-jpa 를 추가해주자. org.springframework.boot spring-boot-starter-data-jpa 2) Entity Class 정의 Entity 는 RDBMS 에서 데이터 테이블을 객체화 시킨 것이다. 즉, 이 클래스는 테이블의 이름과 컬럼들에 대한 정보를 가진다. 이제 데이터베이스의 레코드로 쓰일 데이터 Entity 를 정의하자. Entity 는 기본적으로 Id 와 Getter, Setter 를 가지고 있어야 한다. // Account.java @Entity public c..
[스프링 부트 개념과 활용] 데이터 1. DB 연동 인프런에서 백기선님의 스프링부트 개념과 활용 강의를 듣고, 개인적으로 공부하며 핵심만 정리한 글입니다. h2 사용법 인메모리 데이터베이스 h2 를 사용하는 법을 알아보자. 1) dependency 추가 pom.xml 에 h2 와 spring-boot-starter-data-jdbc 라이브러리를 추가한다. com.h2database h2 runtime org.springframework.boot spring-boot-starter-data-jdbc 2) DataSource 와 Connection 로 연동하기 ApplicationRunnner 로 DB에 데이터를 넣어보는 프로그램을 실행시켜보자. 먼저 DataSource 로 부터 Connection 을 받아와 DB 연산을 수행할 수 있다. @Component..
[스프링 부트 개념과 활용] 웹 MVC 설정 4. HATEOAS 와 CORS 인프런에서 백기선님의 스프링부트 개념과 활용 강의를 듣고, 개인적으로 공부하며 핵심만 정리한 글입니다. HATEOAS 해당 내용은 스킵. 이후 REST API 를 공부할 때 제대로 보자. 스프링 부트에서 지원하는 HATEOAS 적용 방법만 간략히 적어둔다. @GetMapping("/hello") public EntityModel hello() { Hello hello = new Hello(); hello.setPrefix("Hey, "); hello.setName("heumsi"); EntityModel helloResource = new EntityModel(hello); helloResource.add(linkTo(methodOn(SampleController.class).hello()).withSe..