공부노트/Spring 7

Maven 과 Gradle의 차이 [JAVA, SPRING, GRADLE, ECLIPSE]

빌드? 빌드 툴? 먼저 빌드란 소스코드 파일을 실행 가능한 소프트웨어 산출물로 만드는 과정을 말합니다. 실생활로 예를 들면 '윈도 95'를 개발하는 것까지가 '개발'이며, 이것이 개인의 컴퓨터에 설치되어서 실행되기까지의 단계 (window를 포장 -> 배송 -> 설치 -> 우리가 실행)를 모두 '빌드(Build)'라고 생각하시면 됩니다. (빌드의 단계 중 컴파일이 포함되어 있는데 컴파일은 빌드의 부분집합이라고 생각하시면 된다.) 그리고 빌드 툴이란 빠른 시간 속에 기술의 발전하여 계속해서 늘어나는 라이브러리의 추가, 프로젝트를 진행하면서 라이브러리의 버전 동기화의 어려움을 해소하고자 등장된 도구입니다. 대표적으로 메이크, 엔트, 메이븐, 그레이들이 있습니다. Maven이란? 메이븐은 자바용 프로젝트 관리..

공부노트/Spring 2022.02.08

[ Spring ] @RequestMapping 대신 @PostMapping @GetMapping 쓰는 이유

@RequestMapping 대신 @PostMapping @GetMapping 쓰는 이유가 궁금했다. 구글링으로 여러 블로그를 찾아봤지만 "코드가 줄어들기 때문"이라는 짤막한 답변이 대부분이었다. @RequestMapping(value="경로", method=RequestMethod.GET) @RequestMapping(value="경로", method=RequestMethod.POST) 이렇게 긴 코드가 @GetMapping("경로") @PostMapping("경로") 이렇게 짧아진다는 설명이다. 참고로 @GetMapping과 @PostMapping 어노테이션은 @PutMapping, @DeleteMapping, @PatchMapping과 함께 스프링 4.3부터 등장했다. 틀린 말은 아니지만 이건 질문..

공부노트/Spring 2022.01.13

[Spring]@Autowired과 @Qualifier 어노테이션

스프링에서는 @Autowired를 사용해 의존성을 주입한다. bean을 설정할 때 를 사용함으로써 굳이 bean 태그 안에 나 태그를 추가하지 않아도 스프링의 @Autowired 어노테이션이 적용된 생성자, 필드, 메소드에 대해 의존 자동 주입을 처리한다. 하지만, 만약 동일한 타입을 가진 bean 객체가 두개가 있다면 어떻게 될까? 스프링이 어떤 빈을 주입해야 할 지 알 수 없어서 스프링 컨테이너를 초기화하는 과정에서 Exception을 발생시킨다. @Autowired의 주입 대상이 한 개여야 하는데 실제로는 두 개 이상의 빈이 존재해 주입할 때 사용할 객체를 선택할 수 없기 때문이다. 단, @Autowired가 적용된 필드나 설정 메서드의 property 이름과 같은 이름을 가진 빈 객체가 존재할 경..

공부노트/Spring 2021.12.22

Spring MVC 프로젝트의 기본 구조

Spring의 전체적인 실행 순서 Request -> DispatcherServlet -> HandlerMapping -> (Controller -> Service -> DAO -> DB -> DAO -> Service -> Controller) -> DispatcherServlet -> ViewResolver -> View -> DispatcherServlet -> Response 예시 1. 일반적인 기본 동작 순서 예시 2. 위 예시에서 Controller 뒷부분의 과정을 생략함 자세한 스프링 실행 순서 1. 클라이언트가 Request 요청을 하면, DispatcherServlet이 요청을 가로챈다. 이 때 DispatcherServlet이 모든 요청을 가로채는 건 아니고 web.xml에 등록된 내용..

공부노트/Spring 2021.12.21

[Spring] 스프링(Spring)의 개념과 Spring MVC

스프링 프레임워크(영어: Spring Framework)는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다. 스프링은 다른 프레임워크에 비해 다음과 같은 특징을 가진다. 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다. 스프링은 Plain Old Java Object 방식의 프레임워크이다. 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 ..

공부노트/Spring 2021.12.18

[Spring] Bean 등록하기

1. 프로젝트 resources에 Spring XML Configuration file을 생성 후 Bean 등록 repo1 package main; public class repo1{ public repo3 giveA(repo3 repo) { return repo; } } repo2 package main; public class repo2{ repo1 rp1; public void setRp1(repo1 rp1) { this.rp1 = rp1; } public repo3 geta(repo3 rp) { return rp1.giveA(rp); } } : repo1의 Setter를 가지고 있음 application.xml repo1 과 repo2 등록 repo2 등록시 필드값 rp1에 ref에 해당하는 re..

공부노트/Spring 2021.12.14

[Spring] IOC 컨테이너와 Bean

IOC (Inversion of Control) : 의존 관계 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는게 아니라, 주입 받아 사용하는 방법 -> 개발자들의 의견을 받아 처음에는 xml 기반으로 객체를 빈으로 등록하였지만 현재는 구글 guice에서 사용한 어노테이션 기반의 Bean등록 방법이 선호됨 -> BeanFactory Interface가 등록된 빈들을 관리함 1. Spring Bean에 대한 구분 Bean으로 등록되지 않은 객체 package main; public class repo1 implements repo{ private int a; public int getA() { return a; } public void set..

공부노트/Spring 2021.12.03
1