Spring Boot 35

[Spring boot] 서버 간 통신

서버 간 통신어떤 포털 사이트를 하나의 서비스 단위로 개발한다고 가정즉 블로그, 카페, 메일 등의 기능들을 하나의 애플리케이션에 통합했다는 뜻서비스를 이렇게 구성한다면 서버를 업데이트 하거나 애플리케이션을 유지보수 할 때마다 ‘사이트 작업 중입니다’ 라는 팻말을 걸고 작업을 해야됨그만큼 개발에 보수적인 입장을 취할 수 밖에 없고, 서비스 자체의 규모도 커지기 때문에 서비스를 구동하는데 걸리는 시간도 길어진다.이러한 문제를 해결하기 위해 나온 것이 → 마이크로서비스 아키텍처(MSA:Microservice Architecture)마이크로서비스 아키텍처는 단어 그대로 서비스 규모를 작게 나누어 구성한 아키텍처이 기능 적용 → 애플리케이션 하나에 여러 기능을 넣어 개발하지 않고 블로그 프로젝트, 카페 프로젝트,..

[Spring boot] 내장 WAS

내장 WAS스프링 부트의 각 웹 애플리케이션에는 내장 WAS(Web Application Server)가 존재웹 애플리케이션을 개발할 때 가장 기본이 되는 의존성인 ‘spring-boot-starter-web’의 경우 밑 그림과 같은 톰캣을 내장한다.스프링 부트이 자동 설정 기능은 톰캣에도 적용되므로 특별한 설정 없이도 톰캣을 실행할 수 있다. 필요에 따라서 톰캣이 아닌 다른 웹 서버(Jetty, Undertow 등)로 대체 할 수 있다.WAS이란?Was(Web Application Server)란?HTTP 요청을 받아서,자바로 만든 웹 프로그램(Servlet, JSP 등)을 실행하고,응답을 클라이언트에게 돌려주는 역할을 한다.자바로 만든 웹 서비스를 동작시키려면 WAS가 꼭 필요하다. WAS 동작 순서..

[Spring boot] 자동 설정

자동 설정스프링 부트 → 스프링 프레임워크의 기능을 사용하기 위한 자동 설정(Auto Configuration)을 지원자동 설정은 애플리케이션에 추가된 라이브러리를 실행하는데 필요한 환경 설정을 알아서 찾아준다.예제@SpringBootApplicationpublic class Chapter1Application { public static void main(String[] args) { SpringApplication.run(Chapter1Application.class, args); }}@SpringBootApplication이걸 붙이기만 해도 Spring이 자동으로 필요한 설정과 Bean을 찾아서 알아서 등록해줌@SpringBootApplication 애너테이션3개의 애너테이션이 합쳐진 것포함된 어..

[Spring boot] 의존성 관리

의존성 관리Spring Framework는 의존성 설정을 개발자가 직접 하고, 호환되는 버전 관리도 수동으로 해야 해서 불편함이 많았음.하지만 스프링 부트에서는 이 같은 불편함을 해소 하기 위해💡 ‘spring-boot-starter’라는 의존성을 제공의존성은 여러 종류가 있음각 라이브러리의 기능과 관련해서 자주 사용되고 서로 호환되는 버전의 모듈 조합을 제공 → 이를 통해 개발자는 라이브러리 호환 문제를 해결할 수 있다. 좀 더 예를 들어 설명한다면기존 Spring Framework 방식의 문제점예전에는 어떻게 했을까?기존 Spring 프로젝트에서는 다음과 같은 식으로 직접 라이브러리 버전을 정해서 명시해야 했음dependencies { implementation 'spring-core:4.3...

[Spring boot] 스프링 프레임워크 vs 스프링 부트

스프링 프레임워크 vs 스프링 부트하이버네이트(Hibernate) → 자바 객체 ↔ 관계형 데이터베이스 간의 매핑(ORM, Object-Relational Mapping) 을 도와주는 프레임워크즉, 자바 객체를 DB 테이블과 자동으로 매핑해주고, SQL문 없이도 DB에 접근하게 해줌Spring에서는 JPA(Java Persistence API)라는 표준 인터페이스를 사용하고, 그 구현체 중 가장 유명한 것이 HibernateJDBC(Java Database Connectivity)란? (1990년대 후반~)Java에서 DB 연결하는 가장 원시적이고 기본적인 방식Java와 DB 사이를 연결해주는 가장 기본적인 방법이고 직접 SQL문 작성 필요반복적인 코드가 많고 생산성이 낮음Connection conn =..

[Spring boot] 다양한 모듈

스프링 프레임워크의 다양한 모듈스프링 프레임워크는 기능별로 구분된 약 20여 개의 모듈로 구성돼 있다. 그림 1.3은 스프링 공식 문서에서 제공하는 다이어그램스프링 프레임워크 공식 문서에는 스프링 버전 별로 다른 다이어그램을 제시하고 있지만 큰 틀은 유사하다.스프링 프레임워크를 사용한다고 해서 모든 모듈을 사용할 필요는 없다.애플리케이션 개발에 필요한 모듈만 선택해 사용하게끔 설계되어 있다. == 경량 컨테이너 설계

[Spring boot] 관점 지향 프로그래밍(AOP)

관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)객체지향 프로그래밍(OOP : Object-Oriented PRogramming)과 다른 것AOP란?AOP는 관점을 기준으로 묶어 개발하는 방식을 의미 == 핵심 로직과 부가 기능을 분리해서 코드를 깔끔하게 관리하는 방식여기서 관점(aspect)이란 어떤 기능을 구현할 때 그 기능을 ‘핵심 기능’과 ‘부가 기능’으로 구분해 각각을 하나으로 보는 것을 의미그럼 ‘핵심 기능’과 ‘부가 기능’의 의미를 알아보자핵심 기능비즈니스 로직을 구현하는 과정에서 비즈니스 로직이 처리하려는 목적 기능을 말한다.ex → 클라인어트로부터 상품 정보 등록 요청을 받아 DB에 저장하고 그 상품 정보를 조회하는 비즈니스 로직을 구현했다면 (1) 상품..

[Spring boot] 의존성 주입(DI)

의존성 주입(DI)의존성이란?MyController는 MyServiceImpl에 의존 ****하고 있다. 즉, 동작하기 위해 다른 객체가 필요한 상황 == "의존성"public class MyController { private MyService service = new MyServiceImpl();} 의존성 주입이란?제어 역전의 방법 중 하나로 사용할 객체를 직접 생성 하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식 의미스프링에서 의존성을 주입받는 방법 세 가지생성자를 통한 의존성 주입필드 객체 선언을 통한 의존성 주입세터(setter) 메서드를 통한 의존성 주입스프링에서는 @Autowired라는 애너테이션(annotation)을 통해 의존성을 주입할 수 있다. 1. 생성자를 통..

[Spring boot] 제어 역전(loC)

일반적인 자바 개발의 경우 객체를 사용하기 위해 다음과 같은 코드를 사용함public interface MyService { public String getHello();}@Servicepublic class MyServiceImpl implements MyService { @Override public String getHello() { return "Hello"; }}@RestControllerpublic class NoDIController { private MyService service = new MyServiceImpl(); // 직접 생성 @GetMapping("/no-di/hello") public String getHello() { ..

[Spring boot] 카카오 로그인 Oauth 2.0

카카오 디벨로퍼 사이트 접속Kakao Developers Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com 내 애플리케이션에서 앱 이름, 사업자 정보 등 기입 사업자 정보는 그냥 앱이름이랑 같이했음이렇게 4가지가 있는데 REST API 키를 복사한다 이게 서버에서 사용할 client-id값이 된다.밑에 플랫폼에 들어가서 이렇게 작성 이제 여기에 들어가주면 됨동의 항목 설정이메일도 필요하니이제 활성화 설정을 on을 해주고리다이렉트 url을 이렇게 작성하는데 밑 처럼 작성을 한다.Spring OAuth2 Client 라이브러리를 사용하면 기본적으로 Red..