스프링 프레임워크 입문

Back-End/Spring 2019. 6. 2. 22:15
728x90
반응형

 

  Intellij 다운 로드

 ( https://www.jetbrains.com/idea/ )




  

  cmd 창 열고 자바 버전 확인 (java -version)

  JDK 버전 : 1.8 (9랑 10은 안됨)
  주의 할 점 : wro4j 메이븐 플러그인이 현재 Java 9 이상을 지원하지 않습니다.




-컨테이너란?-


인스턴스의 생명주기를 관리하고, 추가적인 기능을 제공하는 것

개발자가 작성한 코드의 처리과정을 위임받은 독립적인 존재라고 생각하면 된다.

즉, 적절한 설정이 되어있으면 프로그래머가 작성한 코드를 스스로 참조한 뒤 알아서 객체의 생성과

소멸을 컨트롤 해준다.



-의존성 주입 (DI - Dependency Injection)-


소프트웨어에선 기능이 추가될때마다 코드의 변경이 이루어지는데 이러한 변경을 없애고자

외부에서 객체간의 의존성을 주입받는 방식,

스프링에서의 의존성 주입은 객체의 실체를 외부 환경설정 (spring config xml, Bean 객체 등)에서 컨트롤 할 수 있는 것이다.

결과적으로 묘듈간의 결합도를 낮춰서 유연한 변경을 가능하도록 하게 하기 위해서 사용



-스프링 컨테이너의 종류-


1. 빈팩토리 (BeanFactory)


DI의 기본사항을 제공하는 가장 단순한 컨테이너

Bean (이하 빈) 팩토리는 빈을 생성하고 분배하는 책임을 지는 클래스

빈의 정의는 즉시 로딩하지만, 빈 자체가 필요하게 되기 전까지는 인스턴스화를 하지 않는다. (게으른 호출 lazy loading)




2. 어플리케이션 컨텍스트 (ApplicationContext)


빈 팩토리와 유사한 기능을 제공하지만 좀 더 많은 기능을 제공


1. 국제화가 지원되는 텍스트 메시지 관리


2. 이미지 같은 파일 자원을 로드 할 수 있는 포괄적 방법 제공


3. 리스너로 등록된 빈에게 이벤트 발생을 알려준다.



3. 빈 팩토리와 어플리케이션 컨텍스트의 차이점


빈 팩토리 : 처음으로 getBean( ) 호출된 시점에서야 해당 빈을 생성 (lazy loading)


애플리케이션 컨텍스트 : 컨텍스트 초기화 시점에 모든 싱글톤 빈을 미리 로드한 후 애플리케이션 기동 후에는

    빈을 지연 없이 얻을 수 있음 (미리 빈을 생성해 놓아 빈이 필요할 때 즉시 사용할 수 있도록 보장)


출처

https://blog.naver.com/swc2672/221421532855




-loC (Inversion of Control, 제어의 역전)-


loC란 제어의 역전 즉 외부에서 제어를 한다는 것이다.

즉, loC는 바로 컨테이너이다.

객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것 (loC 컨테이너)을 의미한다.




-loC와 DI의 관계-


스프링 프레임워크의 가장 큰 장점으로 loC  컨테이너 기능이 부각되어 있으나, loC 기능은 스프링 프레임워크가

탄생하기 훨씬 이전부터 사용되던 개념이었다.

그러므로 "loC" 기능을 스프링 프레임워크의 장점이라고 이야기 하는 것은 적합하지 않다"고 반론을 제기하면서

경량 컨테이너의 이름을 DI 라고 정하기로 한다.






Intellij 프로젝트 내부에서 자바 버전 확인

file - project structure - project sdk 확인






메이븐 프로젝트 실행 방법 


1. 우측메뉴에서 아까 다운받은 메이븐 프로젝트를 add하고 petclinic -> Plugins -> spring-boot 를 더블클릭

   (원래는 wro4j를 실행해야되는데 spring-boot 애플리케이션을 실행하면 자동적으로 포함되서 같이 실행되게 된다)




  플러그인이 하는일


  css파일과 자바스크립트 작성하는 일을 한다.

  플러그인을 실행하지 않으면 뷰가 깨질수 있기때문에 꼭 실행해주어야 한다.





2. IDE에서 아래 경로로 메인 애플리케이션 실행



PetClinicApplication 내부


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
32
33
34
35
36
37
/*
 * Copyright 2012-2019 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 
package org.springframework.samples.petclinic;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
/**
 * PetClinic Spring Boot Application.
 *
 * @author Dave Syer
 *
 */
@SpringBootApplication //스프링 부트 애플리케이션
public class PetClinicApplication {
 
    public static void main(String[] args) { //스프링부트 기반의 프로젝트에서 메인이 되는 애플리케이션
 
        SpringApplication.run(PetClinicApplication.class, args);
    }
 
}
 
cs


위의 main에서 실행하면 서버쪽 코드는 다 적용이 된다.

하지만 프론트엔드쪽 코드를 수정하면 메이븐이나 wro4j로 직접 실행한 다음 다시 메인 애플리케이션(PetClinicApplication)을 실행해야 

변경된 view가 적용된다.



-프로젝트의 구조-




  

  Jmeter


  • 부하 테스트 및 성능 측정을 위해서 개발된 100% 순수 자바 애플리케이션
  • HTTP를 사용하여 사이트의 부하를 테스트 할 수 있으므로 정적이거나 동적인 자원
  (파일, 서블릿, 자바객체들, 데이터베이스 등)에 대해서 테스트하는데 사용



728x90
반응형
: