Back-End 45

Web Server와 WAS 이해하기

Java를 기준으로 작성되었습니다. Web Server와 WAS(Web Application Server) 웹 서버와 WAS의 역사 초기의 웹서버는 클라이언트의 요청에 대해 기존에 생성된 정적인 컨텐츠(Static Contents)만 응답할 수 있었다. 그 후 사용자의 요청에 따라 로직을 수행 후 변경된 동적인 컨텐츠(Dynamic Contents)를 응답할 필요가 생겼는데, 이를 Application이 붙은 Web Server라 하여 WAS라고 부른다. 웹 서버의 역할을 WAS가 대체할 수 있지만, WAS는 동적 컨텐츠를 제공하는데 집중하고 웹 서버는 정적 컨텐츠 제공 뿐만 아니라 여러 대의 WAS에게 분산하여 요청하는 등의 역할이 나뉘어 발전하게 되었다. 웹 서버 '미리 생성해 저장해놓은' 정적인 컨..

Back-End/Server 2021.12.19

[Spring] Collection Bean 생성하기 - XML Config

❑ ArrayList의 생성자를 이용한 Collection Bean 생성 1) ArrayList의 생성자 살펴보기 ArrayList는 Collection을 받을 수 있는 생성자가 있다. 따라서 Spring Bean을 등록할 때 ArrayList 클래스를 type으로 이용해 Collection Bean을 생성한다. 2) SpringConfig.xml: DI지시서 작성하기 // Case1. ArrayList 내부에 bean 직접 정의 // ArrayList를 타입으로 사용 // Case2. 외부에 정의한 bean을 참조 // ArrayList를 타입으로 사용 태그 설명 ArrayList 타입의 객체를 Bean을 생성한다. , 생성자로 Collection을 받을 수 있으므로, 생성자 DI임을 알리는 태그와 ..

Back-End/Spring 2021.12.14

[Spring] IoC 컨테이너 사용하기 - XML Config

❑ IoC 컨테이너 사용하기 Spring Bean Configuration을 읽어객체를 생성하고 조립해주는 Spring의 구체적 객체는 ApplicationContext(Interface) 다. SpringConfig를 넘기는 방식에 따라 4가지로 분류된다 ClassPathxmlApplicationContenxt: Application의 root부터 경로를 지정할 때 (대표적인 구현체) FileSystemXmlApplicationContenxt: xml 파일의 directory 경로 XmlWebApplicationContenxt: SpringConfig.xml을 웹에 등록해서 사용 AnnotationConfigApplicationContenxt: Annotation을 스캔하는 방식으로 사용 아래 예제를..

Back-End/Spring 2021.08.19

[Kafka] Local 환경에 Kafka Cluster 구성하기 (Windows 환경)

0. Local 카프카 구성학습을 위해 한 개의 Machine에 세 개의 Kafka Broker를 띄우고, Zookeeper는 1개만 띄운다.세 개의 Kafka Broker를 띄우기 위해 브로커의 포트를 9092, 9093, 9094 로 설정하여 실행한다 1. server.properties 작성세 개의 브로커를 띄우기 위해 server.properties를 세 개 만든다server.properties를 복사해 server1.properties 생성server.properties를 복사해 server2.properties 생성각각의 server.properties의 broker.id, listener, log.dirs를 위와 같이 설정한다$ vi config/zookeeper-server-start.sh..

Back-End/Kafka 2021.08.17

[Kafka] Kafka 설치 및 CLI를 이용해 Producer, Consumer 테스트 (Windows 환경)

0. 기본 환경jdk 1.8 버전 이상 설치 필요시스템 환경변수 설정 필요 (JAVA_HOME) 1. Kafka 설치Apache Kafka 공식 홈페이지 kafka_2.13-2.8.2.tgz 다운로드적당한 위치로 파일을 옮기고 압축 해제압축 해제 하면 설치가 끝난 것. kafka_2.13-2.8.2 폴더로 카프카를 실행시킬 수 있다.Zookeeper, Kafka 실행 등을 .sh 파일로 실행했던 맥 환경과 달리 윈도우에서는 bin/windows 폴더 안에 있는 배치 파일들을 사용한다. 2. Zookeeper 실행1. 새로운 PowerShell 실행2. 카프카 폴더로 이동3. 주키퍼 실행$ ./bin/windows/zookeeper-server-start.bat ./config/zookeeper.prope..

Back-End/Kafka 2021.08.07

[Spring] 값(Value) 주입 설정 방법 - XML Config

❑ 값(Value) 주입 설정 방법 2021.07.17 - [Back-End/Spring] - [Spring] 의존성 주입(DI) 설정 방법 - XML형식 Config 에서 의존 클래스(객체)를 주입하는 방법을 살펴보았다. 여기에 더해 Spring은 Bean Configuration을 이용해 Int, String과 같은 '값(Value)'를 주입하는 것도 지원하니 방법을 알아본다 1) Spring Bean 등록 ElectricMotor (Bean으로 등록될 Class) package com.test.di; public interface PowerUnit { void printMaxSpeedLimit(); } public class ElectricMotor implements PowerUnit { priv..

Back-End/Spring 2021.07.24

[Spring] JPA를 사용한 MySQL 연동(생성/조회) 예제

★MySQL이 설치되지 않은 경우: MySQL 설치 및 시작 2021.07.13 - [Back-End/Database] - [MySQL] 설치 및 시작(MacOS 환경, DBeaver) [MySQL] MySQL 설치 및 시작(MacOS 환경, DBeaver) 1. 터미널 실행 후 아래를 입력해 MySQL 설치 brew install mysql 2. 설치 완료 후 설정 We've installed your MySQL database without a root password. To secure it run: mysql_secure_installation → 보안 설.. citronbanana.tistory.com [중요] MySQL이 설치되었더라도 외부접속이 허용된 User를 생성해야 한다. 위 글의 5...

Back-End/JPA 2021.07.19

[Spring] 의존성 주입 방법(Setter, 생성자 방식) - XML Config

Spring 의존성 주입은 Spring이 의존 객체를 Client 객체에 직접 주입해주는 것을 의미한다. 따라서 원하는 대로 Spring이 주입해줄 수 있도록 '주문서'를 잘 작성하는 방법을 알아본다. 주문서는 XML 또는 어노테이션으로 작성할 수 있는데, 요즘은 보통 어노테이션으로 작성한다. 하지만 레거시 시스템을 이해하기 위해 XML 형식의 의존성 주입 설정 역시 알아두면 좋다. ❑ Setter를 이용한 의존성 주입 설정 Client Class: Car package com.test.ui; public class Car { private PowerUnit powerUnit; // Dependency public void setPowerUnit(PowerUnit powerUnit) { this.powe..

Back-End/Spring 2021.07.17

[Spring] 의존성 주입(DI)과 IoC 컨테이너의 개념

스프링 프레임워크의 기본이자 핵심 기능인 DI와 IoC Container를 배워보자 ❑ DI(Dependency Injection) 주입할 의존성 public interface PowerUnit { void useSource(); } public class GasolineEngine implements PowerUnit { @Override public void useSource() {} } public class ElectricMotor implements PowerUnit { @Override public void useSource() {} } 1. 의존 클래스 내부 정의 # 의존 클래스 내부 정의: 의존 Class ElectricMotor를 Car가 내부에서 직접 정의 public class Car..

Back-End/Spring 2021.07.16

[MySQL] 설치 및 시작(MacOS 환경, DBeaver)

1. 터미널 실행 후 아래를 입력해 MySQL 설치 brew install mysql 2. 설치 완료 후 설정 We've installed your MySQL database without a root password. To secure it run: mysql_secure_installation → 보안 설정 MySQL is configured to only allow connections from localhost by default To connect run: mysql -u root → 터미널에서 root 계정으로 접속 To have launchd start mysql now and restart at login:brew services start mysql Or, if you don't want..

Back-End/MySQL 2021.07.13

[Spring] Spring Bean과 의존 관계(Dependency Injection)

❑ 의존 관계가 필요한 상황 @Controller public class MemberController { private final MemberService memberService = new MemberService(); } public class MemberService { } 위와 같이 MemberController가 MemberService 클래스를 사용(의존)하고 있다고 가정하자. MemberController는 새롭게 초기화되는 MemberService가 아닌 1개만 생성되어 사용할 객체가 필요하다면 Spring Dependency Injection(의존성 주입) 기능을 통해 의존관계를 설정해주는 것이 좋다. ❑ 컴포넌트 스캔과 자동 의존관계 설정 Spring Bean과 의존 관계 설정 @Co..

Back-End/Spring 2021.07.09

[Spring] 강한 결합(Tight Coupling)과 느슨한 결합(Loose Coupling)

의존성 주입(DI: Dependency Injection)과 IoC(Inversion Of Control) 컨테이너는 Spring의 기본이자 핵심 기능 중 하나다. Spring을 이해하기 위해서 가장 먼저 학습해야할 내용이다. DI를 배우기에 앞서 강한 결합 대비 느슨한 결합의 이점을 보며 외부 의존성 주입(DI)의 필요성에 대해 학습할 필요가 있다. ❑ 강한 결합(Tight Copuling)Class DiagramCode ExampleAS-IS) GasolineEngine 참조public class Car { private GasolineEngine gasolineEngine = new GasolineEngine(); public void ride() { gasolineEngine.useOil(); ...

Back-End/Spring 2021.07.04

[Spring] 웹 개발 기초 개념 - 정적 컨텐츠, MVC와 템플릿 엔진, API

❑ 간단 요약 정적 컨텐츠: html을 그대로 웹 브라우저에 전달하는 것 MVC와 템플릿 엔진: 서버에서 html을 수정, 가공하여 전달하는 방식 API: 서버에서 html을 전달하는 것이 아니라, JSON, XML 방식으로 데이터만 Client에게 전달하여 Client가 직접 View를 그리는 방식. 최근에는 API 방식으로 많이 개발되고 있으며, 서버끼리 통신할때도 html을 내릴 필요가 없기 때문에 API 방식을 많이 사용한다 ❑ 정적 컨텐츠(Static Contents) Spring Boot Reference Doc > Spring Boot Features > 7.1.5. Static Content 를 보면 기본적으로 String Boot는 static content를 서비스 한다고 나와있다. B..

Back-End/Spring 2021.07.02

[Spring] Welcome Page 생성, MVC 이해하기

❑ Welcome Page 만들기 Spring Boot는 static에 Index.html을 올려두면 Welcome Page 기능을 제공한다 정적(static) Page를 만들어서 넣는 곳 Project Explorer > src > main > resource > static 위와 같이 HTML File을 선택해 Index라는 파일명으로 추가한 뒤 아래와 같이 수정한다 Index.html Welcome to HYPeoples Page1 open Page2 open 다만, Index.html 역시 정적(statIc) 페이지이므로 Controller에 별도로 @GetMapping("/")으로 연결된 메서드가 있다면 Index.html이 아닌 해당 메서드가 return하는 html 페이지가 열리게 된다. W..

Back-End/Spring 2021.06.29

[Spring] 프로젝트 생성 및 환경설정

❑ Spring 프로젝트 만들기 Spring 프로젝트 생성 URL: https://start.spring.io/ Spring Boot SNAPSHOT은 정식 Release 버전이 아닌 테스트 버전이다 Project Metadata Group: 보통 회사명을 적는다 ex) com.samsung Artifact: Build 된 결과물 Dependencies: 사용할 Library 선택 Spring Web: 웹 프로젝트 만드는데 사용 Thymeleaf: HTML을 만들어주는 템플릿 엔진. 회사마다 사용하는게 다르다 위에까지 세팅한 후 GENERATE 클릭하면 바탕화면에 생성됨(Artifact명 또는 Name) ❑ IntelliJ에서 프로젝트 환경설정 Spring Project Open IntelliJ 실행 후..

Back-End/Spring 2021.06.28