일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- Eclipse
- Java
- 숫자정렬
- MVC
- 버블정렬
- 배열정렬
- Swing
- 계산기GUI
- 알고리즘
- 이클립스
- 내림차순정렬
- 버블소트
- 자바알고리즘
- 스프링
- 계산기
- GUI
- 자바GUI
- 자바 #java #이클립스 #eclipse #switch #switch문 #사칙연산 #계산기 #calculator #간단한계산기
- Spring
- 자바 계산기
- 자바
- 이클립스 #이클립스단축키 #자바 #자바단축키
- 어노테이션
- annotation
- 오름차순정렬
- Today
- Total
온 코딩
[Spring] 개념정리 및 STS 사용 법 본문
스프링
- 엔터프라이즈 어플리케이션에서 필요로하는 기능을 제공하는 프레임워크
- 경량 프레임워크로 자바 객체를 담고 있는 컨테이너, 자바 객체의 생성, 소멸과 같은 라이프 사이클을 관리
- DI(Dependency Injection) 패턴 지원 , 설정 파일을 통해서 의존 관계를 설정할 수 있다
- AOP(Aspect Oriented Programming) 지원, 트랜젝션이나 로깅, 보안과 같은 공통으로 필요로 하는 기능을 분리해서 각각의 모듈에 적용할 수 있다.
- POJO(Plain Old Java Object) 를 지원, 특정 인터페이스나 클래스를 상속 받지 않은 자바 객체를 스프링 컨테이너가 저장
- 트랜젝션 처리를 위한 일관된 방법 제공
- 영속성과 관련된 다양한 API를 제공
- 빠른 구현 시간, 쉬운 관리, 개발자들의 역량 획일화, 검증된 아키텍쳐의 재사용과 일관성 유지
- Presentation / Bussiness / Persistence 영역으로 나뉘어져 있음
- IoC : 객체 생성을 컨테이너가 대신 처리, 객체와 객체 사이의 의존 관계도 컨테이너가 처리
=> 결과적으로 소스에 의존관계가 명시되지 않으므로 결합도가 떨어져서 유지보수가 편해짐
- 컨테이너 : 특정 객체의 생성과 관리를 담당하고 ,객체의 운용에 필요한 다양한 기능을 제공 / 일반적으로 서버 안에 포함되어 배포 및 구동된다.
=> Servlet 컨테이너 : Servlet 객체를 생서하고 관리 / Tomcat 서버에 포함
=> EJB 컨테이너 : EJB 객체를 생성하고 관리
=> 스프링 : 애플리케이션 운용에 필요한 객체를 생성, 객체간의 의존관계를 처리
1. DI(Dependency Injection) 의존성 주입
: 객체 사이의 의존관계를 객체 자신이 아닌 외부의 조립기가 수행
- 스프링 설정 차일이나 어노테이션을 이용하여 객체 간의 의존관계 설정
=> instance(bean) 설정을 통해 객체 생성 (.xml문서)
2. Interface 사용
: 결합도와 의존성을 낮춤
- 코드의 변경 없이 xml의 설정만으로 객체 변환이 가능
Bean
1. 의존관계설정
- 생성자 설정
<bean id="이름" class="클래스 위치" >
<constructor-arg value="생성자 파라미터"></constructor-arg> // 기본데이터 타입일경우 : String으로 처리됨
<constructor-arg ref="생성자 파라미터"></constructor-arg> //객체를 전달받을 경우
</bean>
- 프로퍼티 설정
<bean id="reference" class="dddddd"></bean>
<bean id="이름" class="클래스 위치" >
<property name="이름" ref="reference"></property> //여기서의 이름은 해당 클래스 프라이빗 변수
</bean>
- xml p태그를 이용한 프로퍼티 설정
xmlns:p설정해놓기
<bean id="reference" class="dddddd"></bean>
<bean id="이름" class="클래스 위치" p:이름-ref="reference">//여기서의 이름은 해당 클래스 프라이빗 변수
</bean>
- 임의 빈 객체 전달 가능
<bean id="이름" class="클래스 위치" >
<property name="이름" ref="reference"></property> //여기서의 이름은 해당 클래스 프라이빗 변수
</bean>
미리 정해지지 않은 객체를 임의로 만들어 사용하는 것, 재사용 불가능
Scope 속성
- singleton : 스프링컨테이너에 의해 한 개의 빈 객체만 생성 ( 기본값 )
- protptype : 빈을 사용할 때마다 객체를 생성
- request : HTTP 요청마다 빈 객체를 생성 (WebApplicationContext에서만 적용)
- session : HTTP 세션마다 빈 객체를 생성(WebApplicationContext에서만 적용)
- global-session : 글로벌 HTTP 세션에 대해 빈 객체를 새성, 포틀릿을 지원하는 컨텍스트에 대해서만 적용 가능
라이프사이클
1. init-method : 커스텀 초기화 메서드
2. destroy-method : 커스텀 소멸 메서드
3. BeanNameAware : 인터페이스
=> 빈 객체가 자기 자신의 이름을 알아야하는 경우에 사용
스프링 사용방법
1. 스프링 프레임워크를 이용한 새로운 프레임 워크 개발
이클립스(인텔리J) 내부에 라이브러리를 설치 => 대기업 / 전자정부
2. 스프링 프레임워크를 이용해서 프로젝트
- 이클립스 (인텔리J) 내에 스프링 플러그인 설치
- 스프링 전용 툴 사용(STS) => 기존 프로젝트 구조를 export 못함
=> war파일로 export하고 import는 안됌
=> 라이브러리 관리 : 인터넷(Maven) => pom.xml
STS 프로젝트 생성 시, 폴더 구조가 복잡!
스프링에서 제공되는 컨테이너
BeanFactory
스프링 설정 파일에 등록된 <bean> 객체를 생성하고 관리하는 가장 기본적인 컨테이너 기능만 제공.
클라이언트 요청(lookup)에 의해서만 <bean>객체가 생성
ApplicationContext
<bean> 객체 관리 기능 이오ㅔ에 트랜젝션 관리, 메시지 기반의 다국어 처리 등 다양한 기능을 지원
커플링
하나의 클래스가 다른 클래스와 얼마나 많이 연결되어 있는지를 나타내는 표현
결합도가 높은 프로그램은 유지보수가 어렵다.
결합도 낮추기 : factory pattern
'복습 ARCHIVE > 모델별 프로젝트' 카테고리의 다른 글
[Spring] DI 설정 - 어노테이션 (0) | 2021.06.16 |
---|---|
[Spring] STS - 기본 설정 (0) | 2021.06.15 |
[Spring](간단한게시판) 기능 - 글 삭제, 글 수정, 글 검색, 글 상세보기 (0) | 2021.06.11 |
[Spring](간단한게시판) DB 연결, 컨트롤러 등록 (0) | 2021.06.10 |
[Spring](간단한게시판) 기본 구조 및 .xml 준비 (0) | 2021.06.10 |