Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 12. 1. 20:51
| 스프링 컨테이너(Spring Container), 빈(Bean) 객체 생명 주기 스프링 컨테이너는 자바에서 GenericXmlApplicationContext 객체를 통해 생성되고 이 객체의 close 매서드를 통해 소멸된다. 빈 객체는 스프링 컨테이너가 만들어지고 난 후 생성되며 컨테이너가 소멸될 때 같이 소멸된다. 소멸된다는 의미는 메모리에서 클리어된다는 의미다.public class Main { public static void main(String[] args) { String xmlConfigPath = "classpath:appContext.xml"; GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(xmlConfigP..
더 읽기
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 11. 29. 23:27
| 스프링 의존객체 선택(Select Spring Dependency Object) @Autowired, @Resource, @Inject 어노테이션으로만 자동적으로 객체를 주입할 경우 컨테이너에서 주입할 대상이 여러개여서 의존성을 주입하지 못하는 경우가 발생할 수 있다. 다음과 같이 @Autowired를 통해 객체를 주입하려고 할 때, 컨테이너상에서는 Weapon 인터페이스를 상속한 2개의 bean 객체인 gun과 knife가 존재한다. @Autowired는 먼저 Type을 기준으로 주입할 객체를 정하기 때문에 같은 Type이 스프링 컨테이너 상에 존재할 경우 에러를 내게 된다. appContext.xml public class Player { @Autowired private Weapon weapon..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 11. 29. 02:08
| 의존객체 자동 주입(Automatic Dependency Injection) 의존 객체 자동 주입(Automatic Dependency Injection)은 스프링 설정파일에서 혹은 태그로 의존 객체 대상을 명시하지 않아도 스프링 컨테이너가 자동적으로 의존 대상 객체를 찾아 해당 객체에 필요한 의존성을 주입하는 것을 말한다. 이것을 구현하는 방법은 @Autowired 또는 @Resource 어노테이션을 사용하여 구현한다. 그리고 이 두 어노테이션은 의존 객체를 찾는 방식에 있어 차이가 있다. @Autowired는 주입하려고 하는 객체의 타입이 일치하는지를 찾고 객체를 자동으로 주입한다. 만약에 타입이 존재하지 않는다면 @Autowired에 위치한 속성명이 일치하는 bean을 컨테이너에서 찾는다. 그리..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 11. 29. 01:14
| 스프링 빈 범위 지정(Spring Bean Scope) 스프링 빈(Spring Bean)의 범위는 2가지로 나뉜다. 싱글턴(Singleton)과 프로토타입(Prototype)이다. 싱글턴 방식은 스프링 컨테이너(Spring Container)에서 자바 어플리케이션이 특정 bean을 가져올 때 딱 하나 유일한 인스턴스만을 제공하는 방식이다. 이 방식은 bean을 설정할 때 default값이다. 그와 반대로 프로토타입은 특정 bean을 가져올 때 가져올 때마다 다른 인스턴스들을 생성해서 제공하는 방식이다. 다음은 싱글턴, 프로토타입을 xml 설정파일 상에서 어떻게 설정할 것인지를 나타낸 xml 코드다. appContext.xml bean을 설정할 때 scope 속성을 통해 bean의 범위를 명시하면 된다..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 11. 29. 00:09
| 스프링 빈 설정 파일 합치기(Spring Bean Configuration XML Merge) 스프링(Spring)에서 여러개로 나뉜 XML 설정파일들을 모아서 하나의 컨테이너로 생성하는 방법은 두 가지가 있다. 1. 자바 소스코드 상에서 Sring 배열로 클래스패스의 리스트들을 명시한 후 GenericXmlApplicationContext의 인자로 전달2. 다른 빈 XML 설정파일에서 여러 XML 설정파일을 합하는 을 입력한 후 클래스패스로서 전달 | 자바 소스코드 상에서 합치기 다음은 두 XML 설정파일이다. 현재 eclipse상의 스프링 프로젝트의 구조는 아래와 같다. appContext.xml과 appContext2.xml 두 설정파일이 존재한다. 이 두 설정파일의 정보는 다음과 같다. app..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 11. 28. 23:17
| 리스트(List) 및 맵(Map) 자료구조 주입 xml 설정 파일 상에서 새터(Setter) 방식을 이용하여 자바의 리스트(List) 혹은 맵(Map)에 의존성을 주입할 수 있다. Duke Mario Suzy Kate 1 KingCrap 2 IceCream 3 Pork import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.context.support.GenericXmlApplicationContext; class Resturant { private List names; private Map menus; Resturant(){ nam..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 11. 27. 23:47
| 의존성 주입(DI, Dependency Injection) 의존성 주입(Dependency Injection)은 객체가 필요로하는 어떤 객체를 생성자(Constructor) 혹은 새터(Setter)를 통해서 주입하는 것을 말한다. 저번 포스팅에서 이야기했던 것처럼 의존관계는 간단히 말해 new 라는 키워드를 통해 생성된다. 코드를 짤 때 이런 강결합(Tightly Coupled)를 일으키는 요소를 무분별하게 짜기 시작하면 나중에 어마어마한 유지보수 비용을 지불해야할 때가 오게 된다. 쉽게 생각해보면 된다. 일체형 배터리와 분리형 배터리에서 어떤 것이 나중에 배터리를 갈아끼울 때 더 편리할 것인가? 이 갈아끼운다는 의미는 결국에는 소프트웨어에서 말하는 유지보수다. 그리고 일체형 배터리에서 기계와 배터리..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 11. 4. 10:12
| 의존성 역전(Inversion of Control) 의존성 역전은 스프링 프레임워크(Spring Framework)에서 지원하는 중요한 개발 컨셉인 의존성 주입(Dependency Injection)을 이해하기 위해 알고있어야 하는 개념입니다. 의존성 역전은 객체 간의 결합도를 줄이고 유연한 코드를 작성하게 하여 가독성 및 코드의 중복, 유지보수를 편하게 할 수 있게 합니다. 그렇다면 의존성 역전이란 개념을 우리가 작성하는 코드에 적용하면 어떤 문제를 해결하고 코드 품질을 향상시킬 수 있는지 구체적인 예를 통해 알아보겠습니다. | 객체 간의 결합도 (Coupling) RPG게임을 하는 도중에는 게임 플레이어가 여러 무기를 적재적소에 활용하여 게임을 즐기게 됩니다. 이것을 코드상으로 옮기며 게임 플레이..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 11. 4. 01:30
| 스프링 프레임워크(Spring Framework)란? 스프링 프레임워크는 자바 진영에서 주로 웹 서버 어플리케이션을 만들기 위해 사용하는 프레임워크입니다. 스프링 프레임워크를 설명하기에 앞서 먼저 프레임워크가 무엇인지 알아보도록 하겠습니다. | 프레임워크(Framework) 프레임워크 개발자들이 생산하는 코드 품질 및 개발 속도를 상향 평준화시키기 위해 고안된 규약이자 표준 개발 방법을 제공해주는 어플리케이션입니다. 소프트웨어 개발자들은 이 글을 보고 계시는 여러분도 아시다시피 경력, 재능 그리고 개발자가 가지고 있는 관련 지식에 따라서 급(?)이 많이 나뉘어집니다. 경험 많은 시니어 개발자들과 주니어 개발자들의 차이는 더 어마어마한데요. 이 부분의 간극을 어떤 규약을 지키면서 프로그램을 개발하는 것..