Spring 12

[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] 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] 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

[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] 프로젝트 생성 및 환경설정

❑ 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

[OOP] 좋은 객체 지향 프로그래밍이란

❑ 객체 지향 프로그래밍의 정의 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.(협력) 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있다. 출처: Wikipedia ❑ 유연하고, 변경이 용이하다? 유연하고 변경이 용이하다는 뜻은 다음과 같은 특징을 가진 것으로 볼 수 있다 레고 블럭 조립하듯이 컴퓨터 부품 교체하듯이 컴포넌트를 쉽고 유연하..

OOP 2021.06.27