Spring 8

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

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

공부노트/Spring 2022.02.08

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

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

공부노트/Spring 2021.12.22

[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

available: expected single matching bean but found 2

Spring @Autowired 어노테이션을 사용하여 자동주입을 하게 될 때 위와 같은 오류가 발생하게 되는데 이는 동일한 타입의 Bean객체가 2개가 있어 어떻게 주입을 해야할지 모르기 때문에 뜨는 에러이다. 해결 방법은 2가지 1. @Primary 2. @Qualifier 1.@Primary 동일한 타입의 여러 Bean 중에 @Primary 어노테이션을 붙여준다. 그럼 해당 어노테이션이 붙은 Bean 이 우선권을 받게되어 프로그램 실행시 동일한 타입의 bean들을 구분하여 해당 Bean으로 주입해준다. ex) @PriMary @Repository public class AhnndigRepository implments Repository { .......... } 2. @Qualifier 이는 @Au..

[JSP] MVC 패턴

개발자의 입장에서는, 사이트를 사용하기 위해 프론트엔드와 백엔드를 처리해주어야 한다. 프론트엔드에 쓰이는 html, css, js 등은 웹 서버에서 처리해주고, DB를 사용하기 위해 사용하는 java는 어플리케이션 서버에서 처리해준다. Web Application Architecture JSP 를 이용하여 구성할 수 있는 웹 어플리케이션 아키텍트는 크게 model1과 model2로 나뉜다. 1) JSP 가 클라이언트의 요청에 대한 logic처리와 response page(view) 에 대한 처리를 모두 하는지, 2) response page(view) 에 대한 처리'만' 하는지가 가장 큰 차이점이다. model1 Model1 구조 model2은 view와 logic을 JSP 페이지 하나에서 처리하는 구조..

공부노트/JSP 2021.12.05

[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

[Java] 싱글톤(Singleton) 패턴

싱글톤 패턴이란? 싱글톤(Singleton) 패턴의 정의는 단순하다. 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다. 싱글톤 패턴을 사용하는 이유나 주의할 점은 조금 후에 살펴보기로 하고, 어떻게 생겼는지 그 모습을 코드로 먼저 만나보자. 싱글톤 패턴을 구현하는 방법은 여러가지가 있지만, 여기서는 객체를 미리 생성해두고 가져오는 가장 단순하고 안전한 방법을 소개하겠다. public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { // 생성자는 외부에서 호출 할수 없도록 private 으로 지정해야 한다. } public static Singleton getInstance() { ..

공부노트/Java 2021.12.02