강의/Java Spring Boot 18

Spring Boot 시작하기

Spring Boot가 있기 전에는 Spring Project를 설정하는 작업이 쉽지 않았다. REST API를 만든다고 가정하면, 이를 위해서 Spring Framework, Spring MVC, 그리고 JSON 바인딩 프레임워크 로깅이 필요하다. 따라서 이와 관련된 모든 의존성과 버전을 xml 파일을 통해 관리해야 했다.  이 뿐만 아니라 각각의 설정도 고려해야 하지, 단위 테스트 해야지, 비기능 요구사항도 고려해야 하지, 오류 처리 기능도 괜찮아야 하지, 그리고 모니터링도 해야 하고....  놀랍게도 Spring Boot가 없을 때는 이 모든 걸 수동으로 구현해야 했다. 때문에 프로젝트 설정이 쉽지 않았다. 게다가 이걸 한 번 하면 끝이 아니라, 새 프로젝트를 만들 때마다 반복해야 했다. 그리고 이..

Spring과 Spring Boot로 JPA와 Hibernate 시작하기

이번 시간에는 JPA와 Hibernate, 그리고 JDBC에 대해 배워볼 것이다. 순서대로 JPA가 없었을 때 JDBC와 Spirng JDBC를 다루고, 그 뒤에 JPA를 왜 써야 하는지, 왜 Hibernate인지, 마지막으로 JPA와 Hibernate의 차이는 뭔지 배울 것이다.그리고 Spring Boot가 있으면 Spring Boot Data JPA로 JPA를 아주 쉽게 다룰 수 있는데 이 과정 또한 다룰 것이다.이 과정들은 실습을 통해 이루어질텐데 먼저 H2를 인메모리 데이터베이스로 사용해서 Spring Boot 프로젝트를 생성하고, 그 다음 H2 데이터베이스에 Course 테이블을 생성할 것이다. 테이블이 준비되면 JDBC를 사용해서 COURSE 테이블의 데이터를 활용해볼 것이다.이렇게 Sprin..

CDI, XML 겉핣기

CDI에 대해 정말 간단하게 알아보자.CDI는 인터페이스로, 구현이 없고, Spring Framework에서 구현된다.우리가 알아야 할 건 두 가지다.1. Inject는 Autowired와 비슷한 기능을 하고, 2. Named는 Component와 비슷한 기능을 한다.끝.xml에 대해 알아보자.지금까지 우리는 Java 설정을 이용했지만, 전통적인 Spring에는 Java 설정이 없어 xml을 사용했다.코드를 작성하며 xml에 대해 알아보자.일단 언제나 그랬던 것처럼 기반 클래스를 만들자. 기반 클래스의 이름은 XmlConfigurationContextLauncherApplication라고 하자.지금까지는 @Configuration을 사용해왔다. 이는 Java 설정을 사용함을 의미한다. 이번 시간에는 XM..

Sterotype Annotation

이번 게시글에서는 스테레오 타입 어노테이션에 대해 알아보자.우리가 평소에 자주 사용하던 @Component는 제네릭 어노테이션으로 모든 클래스에 사용할 수 있다.이런 @Component가 구체화된 것을 스테레오타입 어노테이션이라 할 수 있는데, @Service, @Repository, @Controller가 있다.스테레오타입 어노테이션은 @Component와 비슷하지만, 더 나아가 타입 또는 메서드의 역할을 나타낸다.@Service는 보통 어노테이션한 클래스에 비즈니스 논리가 있음을 나타낸다.@Controller는 웹 어플리케이션과 REST API에서 컨트롤러를 정의하는데 사용된다.@Repository는 Bean이 데이터베이스와 통신하는 경우에 사용된다.아래는 예시이다.package com.in28min..

Spring Framework 고급 기능 살펴보기 - Lazy initialization, Prototype, PostConstruct, PreDestroy

이번 게시글에서는 Spring Framework에서 사용할 수 있는 여러 기능에 대해서 알아보자.- Lazy Intialzation- Prototype- PostConstruct- PreDestroy가장 먼저 Lazy initialization에 대해서 알아볼 것이다.스프링의 초기화 방식에는 즉시 초기화와 지연 초기화 두 가지가 있다. default 설정은 즉시 초기화이다.오늘도 코드로 예시를 들기 위해 기반 클래스를 하나 만들어보자. 기반 클래스의 이름은 LazyInitializationLauncherApplication이라고 가정하자.그리고 이 클래스 안에 Bean 몇가지를 만들어보자.@Componentclass ClassA {}@Componentclass ClassB {}여기서 ClassB는 멤버변..

Spring Framework 의존성 주입의 다양한 유형

의존성 주입에 대해 설명하기 전에, 지금까지 배운 것들을 복습해보자.@Component 어노테이션은 스프링이 어떤 클래스를 관리해야할 대상인지 아닌지 알 수 있게 해주는 어노테이션이다. 이러한 컴포넌트들을 탐색할 범위를 정하기 위해 @ComponentScan 어노테이션을 사용했다.이렇게 코드를 작성하고, 어플리케이션을 실행하면 Spring은 가장 먼저 컴포넌트 스캔을 수행해서 찾은 컴포넌트의 의존성을 확인하고, 이에 따라 모두 와이어링 한다. 이 과정을 의존성 주입이라고 한다.Constructor-based: Dependencies are set by creating the Bean using its Constructor(recommended)Setter-based: Dependencies are set..

Spring Framework를 사용하여 Java 객체(Bean)을 생성하기

저번 시간에 다 설명하지 못한 Question 5부터 이어서 설명하겠다.Question 5: Spring is managing objects and performing auto-wiring앞선 시간에는 우리가 Bean을 수동으로 생성했다.그런데 만약 Bean을 수동으로 만들 필요가 없다면 어떨까?즉, Spring 프레임워크가 우리 대신 Bean을 생성해줄 수 있다면 어떨까, 하는 질문인데일단 질문에 답하기 전에 이를 위한 환경을 만들기 위해 Configuration 파일과 App 파일을 결합한다. 지금부터 import문은 생략하도록 하겠다.package com.in28minutes.learnspringframework;import....@Configurationclass GamingConfiguratio..

Java Spring Framework 시작하기

애플리케이션 아키텍처는 지난 20년 동안 지속적으로 발전해왔음- 기본 웹 애플리케이션 -> 웹 서비스 -> REST API -> Full Stack -> MSA이렇게 발전한 애플리케이션을 구축하는데 여러 프레임워크를 사용함.이러한 프레임워크를 사용하면 사용하지 않았을 때에 비해 훨씬 적은 코드로 많은 걸 할 수 있음.우리는 그 중 Spring과 Spring Boot에 대해 배울 것.이번 장의 커리큘럼은 아래와 같음.가장 먼저 Spring Project를 만들어 볼 것.가장 좋은 방법은 start.spring.io를 이용하는 것.이번 강의에서는 Maven Project를 이용하고 있고, Java를 사용하며(필자는 Java 17 사용), Spring Boot 3을 사용함. SNAPSHOT은 개발중인 버전으로..