취미로 음악을 하는 개발자

[Spring] 프로젝트 생성 본문

공대인/Spring[Boot]

[Spring] 프로젝트 생성

영월특별시 2019. 5. 20. 14:47
728x90

// Spring 프레임워크 특징 및 모듈

1) 자바 객체를 직접 관리함. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
2) POJO(Plain Old Java Object) 방식의 프레임워크. 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가벼움.
3) IoC (Inversion of Control, 제어 반전)를 지원. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 Spring에서 사용자의 코드를 호출.
4) DI (Dependency Injection, 의존성 주입)를 지원. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜줌.
5) AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍)을 지원. 따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리 가능.

1) IoC
: 스프링의 가장 중요하고 핵심적인 기능으로서 자바의 reflection을 이용해서 객체의 생명주기를 관리하고 DI를 통해 각 계층이나 서비스들간의 의존성을 맞춰줌. 이러한 기능들은 주로 환경설정을 담당하는 XML 파일에 의해 설정되고 수행된다.

2) AOP
: Spring은 로깅이나 보안, 트랜잭션 등 핵심적인 비즈니스 로직과 관련이 없으나 여러 곳에서 공통적으로 쓰이는 기능들을 분리하여 개발하고 실행 시에 서로 조합할 수 있는 AOP를 지원한다. 

3) JDBC
: DB에 접속하고 자료를 저장, 읽기를 위한 여러 가지 유명한 라이브러리

4) Transaction Management
: 추상화된 트랜잭션 관리를 지원하며 xml 설정파일 등을 이용한 선언적인 방식, 프로그래밍을 통한 방식을 모두 지원.

5) MVC, Model View Controller
: 웹 프로그래밍 개발 시 거의 표준적인 방식인 MVC 패턴을 사용한다. DispatcherServlet이 컨트롤러 역할을 담당하여 각종 요청을 적절한 서비스에 분산시켜주며 이를 각 서비스들이 처리를 하여 결과를 생성하고 그 결과는 다양한 형식의 View 서비스들로 화면에 표시될 수 있다.

6) batch
: 특정 시간대에 실행하거나 대용량의 자료를 처리하는데 쓰이는 일괄 처리를 지원. Spring 배치는 Quartz 기반으로 동작.


// Generic java vs Spring

일반 프로젝트 : 순수한 java 파일

Spring : Spring 모듈들을 이용하여 개발 진행


// resources/applicationContext.xml

<?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">


<bean id="tWalk" class="testPjt.TranspotationWalk"/>

</beans>


bean : 하나의 객체라고 생각하면 됨

<bean id="임의로 가능" class="패키지명.클래스명"/>


- 기존 자바 프로젝트와 Spring 모듈을 이용한 프로젝트는 어떻게 다른가?

// java/MainClass

import org.springframework.context.support.GenericXmlApplicationContext;


public class MainClass {

// 기존 자바만 사용했을 때와 Spring 모듈을 사용했을 때의 차이

public static void main(String[] args) {

/*

* TranspotationWalk transpotationWalk = new TranspotationWalk();

* transpotationWalk.move();

*/

// Spring Container에 먼저 접근 -> applicationContext.xml

// id가 tWalk, Datatype이 TranspotationWalk 클래스인 Bean(객체)를 가져온다.

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationContext.xml");

TranspotationWalk transpotationWalk = ctx.getBean("tWalk", TranspotationWalk.class);

transpotationWalk.move();

ctx.close(); // 리소스를 사용하고나면 반환해준다.

}


}


자바처럼 new 객체를 만드는 것이 아니라 resources에 있는 Container 역할을 해주는 것을 이용하여 사용한다.

-> GenericXmlApplicationContext의 getBean() 메소드를 통해 사용


출력

5월 20, 2019 2:50:46 오후 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

정보: Loading XML bean definitions from class path resource [applicationContext.xml]

5월 20, 2019 2:50:47 오후 org.springframework.context.support.GenericXmlApplicationContext prepareRefresh

정보: Refreshing org.springframework.context.support.GenericXmlApplicationContext@2dda6444: startup date [Mon May 20 14:50:47 KST 2019]; root of context hierarchy

도보로 이동 합니다.5월 20, 2019 2:50:47 오후 org.springframework.context.support.GenericXmlApplicationContext doClose

정보: Closing org.springframework.context.support.GenericXmlApplicationContext@2dda6444: startup date [Mon May 20 14:50:47 KST 2019]; root of context hierarchy


ㄴ 객체를 생성하는 로그들이 추가된 것일 뿐


- 또 다른 프로젝트 생성 방법

: 로컬에서 파일을 생성하고 eclipse에서 import하는 방법

1. 임의의 폴더에 src/main 폴더를 만들어주고 main 하위폴더로 java와 resources 폴더를 만들어준다.


2. src 폴더 안에 에디터를 사용하여 pom.xml 파일을 만들어주고 기존에 사용했던 pom.xml에서 복사 붙여넣기를 해준다.



3. eclipse에서 import 해준다. Maven > Existing Maven Projects > Root Directory는 만들었던 폴더 지정, 만든 후에는 아래와 같이 나올 것이다.


4. 이전과 같이 java와 resources 폴더에 필요한 파일들을 넣어주면 된다.


출처 : 위키백과

Comments