Spring Framework Basic

정원·2022년 6월 2일
0

Spring

목록 보기
1/11

22.06.02 스프링으로 들어오니까 어질어질하는 구만...

프레임워크(Framework)?

: 뼈대를 이루는 코드들의 묶음

  • 프레임워크란 기본 뼈대이다. 자동차를 만들 때 뼈대를 구현한 다음 만든다.
  • 프레임워크는 방향성을 제시하고, 원하는 기능을 빠르게 만들 수 있게함.
  • 스프링 프레임워크는 주요기능으로 DI, AOP, MVC, JDBC 등을 제공한다.

모듈?

  • 라이브러리(클래스모음)
  • 프레임워크안에 미리 만들어져 있는 기능

# Spring3 - 전자정보프레임워크(국가에서지정), Spring할 수 있으면 boot는 자동~. 5버전까지 나와있고 우리는 5버전을 사용.
# Spring boot2 - Spring과구조는 같은데 생산성을 올린 형태

스프링 프레임워크 특징

  • POJO (Plain Old Java Object) 기반의 프레임워크
    : 자바 개게의 라이프사이클을 스프링 컨테이너가 직접 관리하며, 스프링 컨테이너로부터 필요한 객체를 얻어 올 수 있습니다.

  • DI (Dependency Injection)을 지원 (의존성주입)*
    : 각 계층이나 서비스들 사이 또는 객체들 사이에 의존성이 존재할 경우 스프링 프레임워크가 서로를 연결 시켜줍니다. 이는 클래스들 사이에 약한 결합을 가능케 합니다. 모든 객체는 모두 의존관계이다.

  • AOP (Aspect Oriented Programming)를 지원(관점지향 프로그래밍)
    : 트랜잭션, 로깅, 보안 등 여러 모듈에서 공통적으로 지원하는 기능을 분리하여 사용할 수 있습니다.

  • 확장성이 높다.
    스프링 프레임워크의 소스는 모두 라이브러리로 분리시켜 놓음으로써 필요한 라이브러리만 가져다 쓸수 있습니다. 그리고 많은 외부 라이브러리들도 이미 스프링 프레임워크

  • Model2 방식의 MVC Framework를 지원

이클립스 workspace 기본 설정(인코딩변경)

window -> preferences -> encoding 검색 -> workspace에 text file encoding - orher눌러서 utf-8변경 , css,html,jsp 다 utf-8로 변경

Spring 새 프로젝트 생성(Maven Project)

Maven Project -> create a simple project체크 -> next -> Group Id (도메인주소 거꾸로 작성한것) Artifact Id(나머지경로) -> finish

pom.xml에 라이브러리 추가하기

pom.xml 파일은 메이븐 설정파일로 메이븐은 라이브러리를 연결해주고, 빌드를 위한 플랫폼이다.
-> 한마디로 메이븐을 이용하면 라이브러리를 설정으로 바로 사용 할 수 있다

  • mvnrepository에서 필요한 라이브러리 이용하기
    https://mvnrepository.com/ -> Spring-context 검색 -> Spring Context 선택 -> 5.3.18 버전 -> 기존에는 jar를 다운받아서 넣었지만 Maven 부분 복사 -> 이클립스 pom.xml에 붙이기.
    jstl랑 강사님이 주신 build 설정 코드 추가
<dependencies>
		<!-- Spring-context 모듈 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.3.18</version>
		</dependency>

		<!-- jstl -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
	</dependencies>
	
	<!-- build 설정(java버전) -->
	<build>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.5.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>utf-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>

Maven플랫폼?

  • 자바용 프로젝트 관리 도구.
  • 배포를 위한 빌드 도구. 빌드 뿐만 아니라 프로젝트의 전체적 라이프 사이클을 관리.
  • 필요한 라이브러리를 특정 문서(pom.xml)에 정의해서 사용할 라이브러리, 해당 라이브러리가 동작하기 위해 필요한 부가 라이브러리까지 관리하여 자동으로 다운로드를 받아 준다.
  • 스프링 프로젝트도 Maven 플랫폼을 기반으로 합니다.

Maven Update

프로젝트의 JRE라이브러리 버전이 메이븐 설정파일에 명시되
어 있는 버전과 일치하지 않아서 발생하는 것으로 프로젝트를
업데이트하라고 나온다.
Maven Update를 설정 : 프로젝트 우클릭 -> Maven -> Update Project..
단축키 : alt+F5

폴더 및 파일의 이해

  1. java 폴더(src/main/java)의 경우 특별한 것은 없고, 앞으로 만들어지는 자바 파일들이 관리되는 폴더이다.
  2. resources 폴더(src/main/resources)의 경우 자원을 관리하는 폴더로 스프링 설정 파일(XML) 또는 프로퍼티 파일 등이 관리된다.
  3. java, resources 폴더는 스프링 프레임워크의 기본 구조를 이루는 폴더로 개발자는 이대로 폴더를 구성해야 한다.

스프링 프로젝트 맛보기

  • SpringTest Class 작성
<script>
public class SpringTest {
	public void hello() {
		System.out.println("스프링 객체 주입 테스트: 안뇽~~~ ");
	}
}
</script>
  • HelloSpring Class 작성
<script>
public class HelloSpring {

	public static void main(String[] args) {
		
		//평소에 쓰던 객체 사용 방식. 객체생성해서 메서드 호출
		SpringTest st = new SpringTest();
		st.hello();
    }
}
</script>
  • 스프링 방식
    : 스프링 방식의 '의존'을 이용하기 위해서는 Main에서 SpringTest객체를 직접 생성하지 않고, 스프링 설정 파일(.xml)을 이용해 보기로 한다.
    가장 큰 차이점은 java파일에서 이용한 new 연산자를 이용하지 않고 스프링 설정파일(.xml)을 이용하는 것이다.
  • src/main/resources 폴더에 test-config.xml파일 생성
    : xml파일에 사용할 객체 미리 등록해놓기.
//DI설정 추가
<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">

<!-- 스프링 컨테이너 내에 디자인한 객체 클래스를 등록
		id="이름" class="클래스위치" -->
	<bean id="test" class="basic.SpringTest"/>
  • HelloSpring Class에서 스프링 방식으로 메서드 호출
    : GenericXmlApplicationContext을 이용하여 xml에 있는 객체 가지고 오기.
<script>
	//스프링에서 사용하는 방식.
	//classpath: == src/main/resources
	GenericXmlApplicationContext ct = 
				new GenericXmlApplicationContext("classpath:test-config.xml");
		
	SpringTest st = ct.getBean("test", SpringTest.class);
	//등록된 bean객체의 id,SpringTest.class모양으로 가지고 와라.
	st.hello();
	
	ct.close();
</script>

0개의 댓글