Spring 프로젝트 생성 방법
New -> Other -> Spring -> Spring Starter Project 로 생성
Name -> 프로젝트 이름
Type -> 구조 공부를 위해 Maven을 사용
원래는 Gradle - Groovy 로 사용한다.
Packaging -> 웹을 사용할 거기 때문에 war로 설정
다음 페이지
Dependencies는 Spring의 핵심이다.
Dependencies-> 추가를 못했다면
Spring이 대부분 자동으로 뭔가를 해준다.
-> 라이브러리를 추가한 것 처럼
이렇게 자동적으로 뭔가 해주는 것은 pom.xml 에서 하는거다.
-> 만약 Dependencies를 추가하지 않고 시작했다면
pom.xml 에서 아래 처럼 적용이 가능하다.
<dependency>
<groupId>JDBC API</groupId>
<artifactId>api 이름</artifactId>
<scope>스코프</scope>
</dependency>
--------------------------------
원래는 라이브러리를 직접 추가했지만
Sprirng에서는 직접 추가해주었다.
--------------------------------
Spring은 로딩바가 최종적으로 종료되고 나서 코드를 수정해야한다.
수업중에 기억해야하는 것
Java Resources
src/main/java >> java 코드 작성하는 곳
src/main/resources >> 설정 작성하는 곳
JAVA코드는 두 페키지 폴더만 사용할 것 이다.
src > main > webapp >> 앞단(view) 작업하는 곳
pom.xml == Spring의 설정파일
.xml 이라고 끝나는 파일은 무슨 파일이죠?
-> "설정 파일"
뭔가가 자동으로 동작한다면
개발자가 설정한대로 동작하는 중인거다.
[오전 2부]
★매우 중요하니 기억하자★
Spring 프레임워크 구조
-> 프레임워크를 사용할때 이걸 왜 쓰는게 좋은지를 아는게 중요하다.
-> 개발양식을 개발자들에게 제시
-> 개발자들의 역량이 획일화
-> 일관성 유지 용이
-> 쉬운 관리
-> 구현시간이 단축됨
-> 개발비용이 최소화
-> 유지보수 용이
-> 재사용성 증가
Spring 프레임워크란?
-> IoC와 AOP를 지원하는 경량의 프레임워크 입니다!
IoC
제어의 역행(Inversion of Control)
제어 = 무언가(객체)를 관리하는 능력
원래는 개발자가 객체를 관리함
객체 생성하고싶네? new BoardDAO();
객체 호출하고싶네? boardDAO.insert();
★ 개발자가 new를 적게 사용하면 고수 > Spring 이전 개발자를 볼때 잘하는 개발자
기존 중간 프로젝트에서는 서블릿 컨테이너(톰캣)가 FC만 new 대신 해줬는데,
최종 프로젝트에서는 DAO, DTO, Controller 등의 POJO도 대신 new 해줄것임!!!
Spring에서는 다른애(컨테이너)가 객체를 관리함 : 컨테이너 == 객체를 관리하는 구나하고 알수있다.
기존 Web 프로젝트에서 new FC();를 하지않았지만 되고 있었다.
자동으로 해주네?? >>> "컨테이너"가 있었다
서블릿을 자동으로 해주고 있었으니 서블릿 컨테이너다
서블릿 컨테이너 == 톰캣이 설정(web.xml) 해준다.
설정 == .xml
Spring에서는 pom.xml 설정파일에서 대신 관리해준다.
곳 컨테이너 : .xml(설정파일) = 1:1 관계라는 결론이 나온다.
※ .xml 과도한 설정이 작성되는 것을 방지하기위해
@ 어노테이션을 대신 사용하기도 한다!
AOP
경량
가벼움
not POJO(서블릿)가 없다는 뜻
POJO 대부분 구성되어있음
[오전 3부]
결합도가 높은 프로젝트의 형태
결합도를 낮추기위한 방법들
1. 오버라이딩 강제 == 인터페이스
2. 개발 패턴(디자인 패턴) : 팩토리 패턴 == 컨테이너 구조의 핵심
OO객체가 필요해.하고 부탁하면,
해당 객체를 주는 패턴을 의미한다.
ex) HandlerMapper
Spring에서 객체를 생성해서 가져다 주는 역할을 "컨테이너"가 한다
-> Spring 컨테이너 //AbstractApplicationContext 라고 불린다.
beans -> 설정들을 스키마라 부른다.
<beans>는 최상위 루트 엘리먼트(요소,태그)라 부른다.
beans 는 다음과 같이 사용한다.
<?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">
<!-- 생성자 메서드에서 멤버변수를 초기화하는 것이 맞지만 -->
<!-- JAVA이전 언어들은 생성자 메서드라는 개념이 없던 언어도 있어 init-method라는 개념이 추가되었다. -->
<bean class="test.IPhone" id="apple" lazy-init="true" init-method="initMethod" scope="singleton"/>
<!-- scope는 기본이 singleton으로 적용되고 -->
<!-- 만약 여러번 생성하고 싶다면 scope="prototype" -->
<bean class="test.GalaxyPhone" id="samsung" lazy-init="true" scope="prototype"/>
</beans>
스프링 컨테이너는 객체를 즉시 로딩한다.
pre-loading
lazy-loading : 지연 로딩으로 설정을 변경해보자.
-> 허나 잘 사용하지 않는다
멤버변수인데, 생성자에서 초기화하지않는 경우
init() 함수에서 초기화하는 경우
"컨테이너"에게 객체 생성을 맡기니
"싱글톤" 패턴이 유지된다!
싱글톤 == 필요한 객체만 생성해서 사용된고 있다.
결론 : Spring 프레임워크(컨테이너)는 싱글톤 패턴을 유지시킴
만약 여러개의 객체를 생성하고 싶다면 <bean scope="protorype">을 설정해주어야한다.
'국비 내용 정리 > Spring' 카테고리의 다른 글
국비 61일차 내용정리 (Spring MAV) (0) | 2024.10.07 |
---|---|
jsp -> Spring까지의 복습 정리 (0) | 2024.10.07 |
국비 60일 내용정리 (Spring 의존성 주입 방법) (1) | 2024.10.04 |
Spring 복습 (0) | 2024.10.04 |
국비 59일 내용 정리(Spring 의존성, 주입) (3) | 2024.10.02 |