능글맞은 구렁이

Spring-사용방법, 프로젝트 생성시 주의 본문

Framework/Spring

Spring-사용방법, 프로젝트 생성시 주의

보라색츄르 2021. 6. 15. 12:10

스프링 사용방법

 

1. 스프링 프레임워크를 이용한 새로운 프레임 워크 개발 이클립스(인텔리j) 내부에 라이브러리를 설치

 

2. 스프링 프레임워크를 이용해서 프로젝트 

    1) 이클립스내에 스프링 플러그인을 설치

    2) 스프링 전용 툴 (STS:Spring Tool Suite)

        => 기존 프로젝트 구조 => export X

        => war 파일로 exportx

        => 라이브러리 관리: 인터넷(Maven) => pom.xml


프로젝트 생성 시, 폴더 구조 복잡

new-> Spring legacy project ->spring MVC Project선택 -> next->패키지 구조 (3개이상 예:com.jbr.biz)->피니쉬

 

 

AOP:관점 지향 프로그래밍

-비즈니스 메소드를 개발할 때, 핵심 비지니스 로직과 각 비즈니스 메서드마다 반복해서 등장하는 공통 로직을 분리함으로써 응집도가 높게 개발할 수 있도록 지원.

-공통적으로 사용하는 기능들을 외부 클래스로 분리.

해당 기능을 프로그램 코드에 직접 명시하지 않고 선언적으로 처리하는 것이 핵심

-따라서 공통 기능을 분리하여 관리할 수 있으므로 응집도가 높은 비즈니스 컴포넌트를 작성할 수 있고 유지보수를 혁신적으로 향상 시킬수있다.

 

스프링에서 제공되는 컨테이너

BeanFactory: 스프링 설정 파일에 등록된 <bean>객체를 생성하고 관리하는 가장 기본적인 컨테이너 기능만제공.

클라이언트 요청(lookup)에 의해서만 <bean> 객체가 생성

 

ApplicationContext : <bean>객체관리 기능 이외에 트랜잭션 관리, 메시지 기반의 다국어 처리 등 다양한 기능을 지원 


**컨테이너 **

-특정 객체의 생성과 관리를 담당하고, 객체의 운용에 필요한 다양한 기능을 제공. 일반적으로 서버 안에 포함되어 배포 및 구동된다.

-대표적인 컨테이너 : 1) Sevlet컨테이너 : Servlet객체를 생성하고 관리. Tomcat서버에 포함

                            2) EJB컨테이너 : EJB객체를 생성하고 관리.

                            3) 스프링 :  애플리케이션 운용에 필요한 객체를 생성, 객체간의 의존관계를 관리.

 

 

IOC(Inversion of Control)컨테이너 : 스프링 프레임워크를 이해하는데 가장 중요한 개념. 익숙한 서블릿 컨테이너를 통해 스프링 컨테이너의 동작 방식에 대하여 학습.

예) project-> src/main/resources -> new -> other ->web->servlet-> STS를 이용하여 서블릿 클래스를 개발했다면, 작성된 Servlet클래스는 web.xml에서 자동으로 완성됨

 

*web.xml*

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <servlet>
    <description></description>
    <display-name>HelloServlet</display-name>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.jbr.biz.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello.do</url-pattern>
  </servlet-mapping>
</web-app>

<servlet></servlet>과 <servlet-mapping></servlet-mapping>이 있어야하며 

name들이 같은지 비교를 하고 그 파일이 있는지 확인을 해야한다.

 

 

 

 

Servlet컨테이너 동작순서

1. WEB-INF/web.xml 파일로 로딩하여 구동

2. 브라우저로부터 요청된 /hello.do 수신

3. com.jbr.biz.HelloServlet 클래를 찾아 

4. 객체를 생성하고, doGet()메서드를 호출

5. doGet()메서드의 실행 결과를 클라이언트 브라우저로 전송

 ※스프링컨테이너 역시 servlet컨테이너와 유사하게 동작하므로 위와 비슷한 요소들이 존재한다. ※

 

제어의 역행 (IoC)의 결합도와 관련됨 개념으로 이해!

 

기존 자바 기반 방식으로 애플리케이션을 개발할 경우, 개발자가 객체들을 생성하고 객체들 사이의 의존관계를 처리.

즉, 개발자가 어떤 객체를 생성할지 판단하고, 객체 간의 의존관계 역시 자바 소스 코드로 표현

 

제어의 역행(IoC) : 이런 일련의 작업들을 컨테이너로 처리하는 것을 의미! 따라서 제어의 역행을 이용하면 소스에서 객체 생성과 의존관계에 대한 코드가 사라져 결과적으로 낮은 결합도의 컴포넌트를 구현할 수있다. 

 

※결합도가 높은 프로그램※

결합도란? 하나의 클래스가 다른 클래스와 얼마나 많이 연결되어 있는지를 나타내는 표현! 결합도가 높은 프로그램은 유지보수가 어렵다.

※결합도를 낮추려면?※

1. 인터페이스 즉 , 다양성을 사용하는 방법

2. 빈 객체들 처럼 빈 팩토리를 사용하는 방법 (팩토리사용)

 

 

 

 

Comments