프로그래밍

[Spring] day58 : 스프링 프레임워크 본문

자바/Spring

[Spring] day58 : 스프링 프레임워크

시케 2023. 8. 9. 22:33
728x90
반응형

2023.07.31.월

스프링 프레임워크

1. SpringBoot
2. Spring 기반으로한 자체 프레임워크

 

프레임워크는 말그대로 골격 / 뼈대를 의미한다

개발에 필요한 기본 골격이 존재한다고 이해하면 쉽다

장점

  1. 유지보수 용이
  2. 개발시간 단축(기준에 대해 얘기할 필요 없음)
  3. 개발자의 역량 획일화 & 실력 상향 평준화
  4. 재사용 용이

스프링 프레임워크란?

: IoC와 AOP를 지원하는 경량의 프레임워크

 

경량이 아닌 경우는 not POJO를 의미한다

즉, not POJO를 최소화하여 작성하는 것이 목표이다

 

※ 우린 이미 JSP 프로젝트에서 경량으로 작업을 해보았다

(Servlet FrontController 한개만 생성하여 사용)

현재 API / 비동기처리 기능 등을 구현할때 Servlet을 추가로 사용하였는데

위의 것들도 POJO로 작성할 것이다

 

IoC(Inversion of Control)

: 제어의 역행
제어권을 개발자가 갖는것이 아닌 프레임워크가 갖는 것을 뜻한다

여기서 제어권은 new(객체화, 인스턴스화)하는 것을 말한다

즉, 개발자가 new(객체화, 인스턴스화)를 하는 것이 아닌
프레임워크에게 제어권을 넘겨주는 것이다

 

★ 코드에 new가 작성되어 있으면 유지보수가 불리해진다
→ 결합도가 높아지기 때문

 

★ Q. 그럼 왜 new가 있으면 결합도가 높아지는가?

new를 직접하여 객체를 사용하면

하나의 변경사항이 있으면 코드가 무조건 변경된다

이는 재컴파일을 해야함을 의미한다

해결01) -다형성 활용(인터페이스 Action)

해결02) - Factory 패턴 활용

 

 

SW 개발 디자인 패턴(MVC, Factory, singletone, ...)

: 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책

그중에 Factory 패턴과 Singletone 패턴을 활용해 볼 것이다

 

 

Factory 패턴이란?
: 객체를 생성하는 코드를 캡슐화하여(HIDING, 은닉화)
사용자로부터 필요한 객체의 이름을 받으면
객체 자체를 반환하는 로직
→ 코드를 단 한글자도 변경하지 않아도 된다

코드를 안바꿨는데 아웃풋이 변경되는 것이 팩토리 패턴의 장점

 

Bean방식으로 구현

 

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

   <bean class="test.GalaxyPhone" id="galaxy" init-method="initMethod" scope="prototype" />
   <bean class="test.IPhone" id="apple" destroy-method="destroyMethod" lazy-init="true" />
   
</beans>

객체명을 받아 객체 자체를 반환하기 때문에

input은 이름 output은 객체이다

이때 반환 타입은 최상위 객체인 Object 이다

 

 

[ 흐름 ]

Bean → 로직 → spring 객체 생성

https://github.com/jihyean/Spring/tree/main/day58

 

728x90
반응형
Comments