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 |