일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 데이터베이스
- 예제
- 함수
- Doit입문SQL
- 자바 오류
- 자바 예외
- DoitSQL입문
- SQL입문
- SQL
- 숫자 형식
- dbms
- 배열 예제
- 우아한테크
- R1C3
- html
- 배열 3요소
- 웹브라우저 수용도
- DoIt
- 함수 선언
- HTML역사
- 웹 브라우저 전쟁
- 크롤링 오류
- 생성자
- 크롤링
- DoitSQL
- 예외
- 숫자형식오류
- 키-값 데이터베이스
- 페이지분석
- 자바
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 데이터베이스
- 예제
- 함수
- Doit입문SQL
- 자바 오류
- 자바 예외
- DoitSQL입문
- SQL입문
- SQL
- 숫자 형식
- dbms
- 배열 예제
- 우아한테크
- R1C3
- html
- 배열 3요소
- 웹브라우저 수용도
- DoIt
- 함수 선언
- HTML역사
- 웹 브라우저 전쟁
- 크롤링 오류
- 생성자
- 크롤링
- DoitSQL
- 예외
- 숫자형식오류
- 키-값 데이터베이스
- 페이지분석
- 자바
- Today
- Total
프로그래밍
[Spring] day58 : 스프링 프레임워크 본문
2023.07.31.월
스프링 프레임워크
1. SpringBoot
2. Spring 기반으로한 자체 프레임워크
프레임워크는 말그대로 골격 / 뼈대를 의미한다
개발에 필요한 기본 골격이 존재한다고 이해하면 쉽다
장점
- 유지보수 용이
- 개발시간 단축(기준에 대해 얘기할 필요 없음)
- 개발자의 역량 획일화 & 실력 상향 평준화
- 재사용 용이
스프링 프레임워크란?
: 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
'자바 > Spring' 카테고리의 다른 글
[Spring] day61 : Command 객체 (0) | 2023.08.13 |
---|---|
[Spring] day61 : Spring MVC로 변경하기 (2) | 2023.08.12 |
[Spring] day60 : Service와 ServiceImplement(+@Repository) (0) | 2023.08.12 |
[Spring] day59 : new 객체화(인스턴스화) (0) | 2023.08.10 |
[Spring] day59 : 의존 관계와 의존 주입(DI) (0) | 2023.08.09 |