본문 바로가기
Category/Spring

[Spring] 스프링과 Bean

by developer__Y 2023. 12. 15.

※해당내용은 스프링을 공부한 내용을 개인적으로 정리한 글로, 정확하지 않은 내용이 있을 수 있습니다. 

Spring ? SpringBoot?

SpringBoot는 기존의 Spring Legacy Project에서 복잡한 환경 설정 및 Dependency,xml 설정 등을 손쉽게 세팅해줘 프로젝트 시작할 때 효율적으로 사용할 수 있게 해주는 Frame-work이다.

  • Tomcat이 내장되어있어 따로 설치하거나, 버전 관리를 하지 않아도 된다.
  • Dependency 설정 자동화

SPRING

  • JAVA 및 JSP&Servlet 기반
  • html,css,javascript,jQuery 등의 스크립트 언어 사용

스프링 Legacy 프로젝트 만들기

Spring Tool Suite를 이용해 생성

  • 생성후 UTF-8 인코딩 설정 필수!!

Dependency Injection 이란?

의존성 주입 : 스프링의 중요한 개념

A 객체는 IOC 컨테이너에 존재하는 new 객체들을 주입 받아 사용한다.

즉, IOC 컨테이너가 다양한 객체들에 대한 제어권을 가지고 있기때문에

제어의 역전(Inversion Of Control) 이라고 한다.

 

Dependency Injection 이란?

의존성 주입 : 스프링의 중요한 개념

A 객체는 IOC 컨테이너에 존재하는 new 객체들을 주입 받아 사용한다.

즉, IOC 컨테이너가 다양한 객체들에 대한 제어권을 가지고 있기때문에

제어의 역전(Inversion Of Control) 이라고 한다.

 

 

 

스프링 Bean을 이용하여 xml 파일 설정을 통해 객체를 이용하는 방법

STS에서 Spring Bean Configuration File 을 생성한다. 해당 파일은 xml 형식으로

JSP에서 Bean 액션태그와 유사하게 Bean 설정을 통해 객체 정보와 필드값들을 셋팅할 수 있다.

 

 

예를들어, 다음과 같은 2개의 클래스가 있다.

원의 반지름을 구하는 메소드 area() 1개만을 가진 Circle 클래스와

MyCircle 클래스는 해당 Circle 타입의 참조변수 circle을 멤버로 가지고, circle의 area() 메소드를 호출하는 ar()메소드를 가지고있다.

기존의 자바코드에서 이를 사용한다면, Main 메소드에서 객체들을 생성후 setter로 값을 할당한뒤 메소드를 사용해왔다.

1. 기존의 자바코드에서의 사용 예시

 

2. Spring Bean을 이용한 사용 예시

 

Spring Bean Configuration File을 통해 다음과 같이 xml 설정을 통해 Circle 객체와 MyCircle 객체를 정의 하고있다.

그리고, <property> 태그를 통해 setter값을 '10'으로 할당하였다.

-> xml을 통한 Bean 설정시 객체의 id 명과 변수명이 동일해야하며 Setter를 통해 주입되므로, Setter 메소드가 있어야한다.

 

 

기존 자바에서 사용하던 방식과 달리 메인 메소드에서 객체를 직접 생성하지않고 xml 설정을 통해 Bean에 있는 객체를 주입받아 사용 하고있다.

 

기존 자바에서는 해당 객체를 생성하는 쪽에서 해당 객체를 변경할수 있는 여지를 가지고있고 이는 제어권이 있다고도 볼수있을것이다.

아마도 스프링에서는 이러한 문제점을 개선하고, 객체를 생성하는 쪽에서 

해당 객체에 대한 제어권을 외부(여기서는 Bean)에서 주입 받아 사용할수 있도록 하는 의존성 주입(DI)을 통해

역할과 구현의 분리라는 목적을 달성하고자 했던것 같다.