Back-End/Spring 13

[Spring] Annotation을 이용한 DI (2) @AutoWired와 @Qualifier

❑ @Autowired 의존성 주입 규칙1: Type Client 객체: Car package com.test.ui; @Component // @Component("carBean") // id를 직접 입력할 때 public class Car { private PowerUnit powerUnit; // Dependency @Autowired public Car(PowerUnit powerUnit) { this.powerUnit = powerUnit; // 생성자를 통한 외부 주입(Injection) } } 의존 객체: ElectricMotor @Component // @Component("electricMotorBean") // id를 직접 명시 할때 public class ElectricMotor imp..

Back-End/Spring 2022.02.02

[React, Spring] 서버에 MultipartFile 업로드(Axios POST 사용)

[Front-End Side] Axios POST를 이용해 File 업로드 요청 1. 파일을 주고받을 때는 Multipart/form-data 타입을 이용한다. 1.1. HTTP Headers에 타입 추가 아래와 같이 headers에 'multipart/form-data'를 추가한다. axios({ ... headers: { 'Content-Type': 'multipart/form-data', }, }); 1.2. JavaScript의 FormData 객체를 생성해 데이터로 전달한다. FormData 인터페이스는 Key/Value 쌍으로 데이터를 쉽게 생성/삭제할 수 있는 방법을 제공한다. ★중요★ 하나의 Key에 Value를 'List 형태'로 여러 개를 보내고 싶을땐 동일한 Key에다 계속 appen..

Back-End/Spring 2022.01.26

[Spring] Annotation을 이용한 DI (1) @Component, @AutoWired

❑ @Component, @Autowired를 이용한 DI 최근에는 Spring Bean Configuration(DI 지시서)를 xml로 작성하는 경우는 거의 없다. 본 포스팅에서는 @Component, @Autowired 등 어노테이션을 각 객체에 직접 이용해 의존성 주입(DI) 하는 방법을 알아본다. 참고로, java class 형식으로 Spring Bean Configuration을 작성해 의존 관계를 정의할 수도 있다. 해당 내용은 추후 포스팅할 예정이다. 1) 어노테이션(Annotation)을 이용할 때의 장점 어노테이션을 사용하면 xml을 변경하지 않고 @Component, @Autowired, @Qualifier 등의 어노테이션만을 추가해서 DI를 바꿔줄 수 있다. 즉, 소스코드도 변경이 ..

Back-End/Spring 2022.01.17

[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

[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] 의존성 주입 방법(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

[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