본문 바로가기
Programming/Spring

[Spring] 시작

open jdk 11
STS 3.1

■ 프레임 워크를 사용하는 이유

"다양한 디자인 패턴과 다양한 라이브러리의 집합체"

디자인 패턴 + 라이브러리

■ 커지는 SW 규모 관리를 위해서는 '규격'이 필요
■ 공통의 컴포넌트들의 반복 생성을 편리하게 - 재사용성을 높이기 위함, 즉 작업 영역간의 결합도(coupling) 문제
■ AOP(Aspect Oriented Programming): 관심사항을 등록해놓으면 코드를 수정하지 않아도(proxy 서버) 필요한 타겟 대상을 찾아 필요한 사전/사후 처리를 해줌

■ 디자인 패턴

"SW 개발 과정에서 재사용하기 좋은 형태로 특정 규약을 묶어 정리한 것"

■ 요구사항은 수시로 변경됨, 소스코드 변경 최소화가 필요
■ 범용적인 코딩 스타일 필요(패턴화)
■ 직관적인 코드 사용 필요
■ 비기능적 요구사항: BE에서 서비스를 제공 (성능, 품질, 보안, 확장성, 안정성)
■ 기반코드 : 상속 or 인터페이스

 

■ 라이브러리

  • 프레임워크와 라이브러리의 차이 : 프레임워크는 LifeCycle을 주관(servlet)하지만, 라이브러리(Gson)는 사용자가 호출했을때만 사용함 즉, 흐름을 주관하고 있지 않는다.

 

■ Maven과 Library 관리

spring framework: 경량급 애플리케이션 프레임워크로, 불필요한 객체 생성을 없애 메모리의 소모를 줄일 수 있다.

■ Maven project: pom.xml 파일 수정, dependency 수정하면 관련된 라이브러리를 다운 받아줌
■ 전자 정부 프레임워크 - 스프링 마이바티스로 이루어져있음

 

■ Spring Framework의 특징

■ 경량: 불필요한 객체 생성 없음

■ 제어역행: 흐름이 뒤바뀌다, die

  • DAO의 메소드를 호출하기 위해 Service에서 Dao를 만드는데, spring은 객체를 직접관리하지 않는다. 스프링 container라는 것이 적절하게 객체를 생성해서 주입해준다. (DI)
  • 객체와 객체의 의존관계를 느슨하게 만든다.

■ 컨테이너
■ 관점지향: (필터와 비슷) AOP

■ Spring Framework의 전략

순수자바... 웹 전용은 아닐지도.

  • Dependency Injection: 의존관계 주입
  • AOP
  • Portable Service Abstraction: 기반코드(추상화)
  • PoJo: plain old java object / 상속이나 구현 없이도 개발할수 있음

 

■ Spring Framework의 구성요소

  • 가장 기본: Spring Core
  • Maven: pom.xml을 수정만하면 라이브러리가 알아서 다운됨... 복잡한데 어떤 라이브러리가 있는지는 잘 모르지만 필요한 라이브러리가 다 설치돼서 좋다..
  • Spring을 한다는 것은 모든 모듈을 다 쓴다는 것이 아니라 필요한 모듈만 가져와서 사용하는 것! (ORM, DAO... 등등)

 

■ DI(Dependency Injection)

빈 설정(Bean Definition) xml 문서 - 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것, 단지 의존관계가 필요하다는 정보를 추가만 하면 됨

  • Setter Injection :
  • Construction Injection :
  • Method Injection :

index = "0" value = "Spring" - 문자열을 매개변수로 받을 때
index = "1" ref = "printer" - 객체를 매개변수로 받을 때

우리는 BeanFactory를 상속받은 ApplicationContext를 사용함
중요 - ApplicationContext: Spring container를 뜻함
중요 - Bean: 하나의 클래스, 객체

group id - 최상위 그룹 아이디
artifact id - 하위 그룹 아이디

■ DI 개념

1) 생성자
2) setter

■ Maven project directory 구조

1) src/main/java
2) src/test/java : 단위 테스트시
3) src/main/resource : 정적문서, 환경설정문서, ~.xml
maven folder - 사용자 - .me - repository
//모든 객체들을 관리할 때 설정을 바꿔주지 않으면 스프링은 무조건 Singleton형탱

기본은 singleton
bean을 생성할 때 scope="prototype" 설정하면 지연 초기화됨

$ 명령어 - properties 파일 참조할 때 쓰기

<!-- 외부 properties 파일의 위치 설정 -->
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"></bean>

 == new configure...

context namespace - 객체를 만들어준다?
생성자 value, ref

setter value, ref

'Programming > Spring' 카테고리의 다른 글

[Spring] Spring을 시작하기 위한 환경 설정(Chapter 1)  (0) 2024.02.03
[Spring] Transaction  (0) 2023.06.16
[Spring] MVC 구조  (0) 2023.06.16
[Spring] Annotation, lombok 활용  (0) 2023.06.16
[Spring] 두번째 개념 정리  (0) 2023.06.16