반응형

Mybatis - List 조회

List list = mapper.getTestList();

mapper 리스트 형태 리턴

-> Select 결과 null 이면 리스트 인스턴스 생성 x -> 리스트에 대한 Null 체크 필요

 

List null 체크 

  1.  list == null 
    • if (리스트 인스턴스 생성 X ) == null : true
    • if (리스트 인스턴스 생성 O && 리스트 [] ) == null : true
  2.  list.size() == 0
    • if (리스트 인스턴스 생성 X) == null : java.lang.NullPointerException
    • if (리스트 인스턴스 생성 O && 리스트 [] ).size() == 0 : true
  3.  list.isEmpty()
    • if (리스트 인스턴스 생성 X) == null : java.lang.NullPointerException
    • if (리스트 인스턴스 생성 O && 리스트 []).isEmpty() == 0 : true 
  4.  CollectionUtils.isEmpty(list)
    • if CollectionUtils.isEmpty(리스트 인스턴스 생성 X) == null : true
    • if CollectionUtils.isEmpty(리스트 인스턴스 생성 O && 리스트 []) : true
    • 리스트 객체 NULL 체크 -> isEmpty() 체크 
public abstract class CollectionUtils {
  public static boolean isEmpty(@Nullable Collection<?> collection) {
    return collection == null || collection.isEmpty();
  }    
}

 

반응형
반응형

Vuex

  • 상태 관리 패턴 + 라이브러리
  • Vue 개발함에 있어 상태를 관리해주는 기능을 제공
  •  컴포넌트 간 데이터 교환 유리
  • Vuex가 없다면?? 컴포넌트간의 데이터 교환 복잡
    • 부모 컴포넌트 -> 자식 컴포넌트 : props 이용
    • 자식 컴포넌트 -> 부모 컴포넌트 : Emit event 방식 이용
    • 형제 컴포넌트 -> 형제 컴포넌트 : Event 버스

Store 

  - 어플리케이션 모든 컴포넌트들의 중앙 집중식 저장소 역할

 

  

Vuex의 핵심 구성 요소

  - State, Mutations, Actions, Getters

 

 

  • State : 데이터 객체
    • 공통으로 참조하기 위한 변수를 정의
    • 프로젝트 모든 곳 참조 및 사용 가능
    • 모든 컴포넌트들 공통된 값 사용
export const state = () => ({
  account: null,
  password: null
})

 

  • Mutations : 동기형 State 변경 처리기
    • 반드시 Mutation을 통해 State 변경
    • 동기 처리 방식
    • commit('함수명', '전달인자') 방식 호출
    • mutations 내에 함수 작성
export const mutations = {
  loginUser(state, account){
    state.account = account
  }
}

 

  • Actions : Mutation 트리거
    • Mutation 실행시키는 역할
    • 비동기 처기 방식
    • dispatch('함수명', '전달인자') 방식 호출
    • Actions 내에 함수 작성
    • 콜백 함수 작성
// 일반적인 호출 호출 시
dispatch('setAccount', account);

// action 정의 - store.js
export const actions = {
  setAccount({commit, dispatch}, account){
    //mutation 실행
    commit('currentUser', account); 
    dispatch('setIsAdmin', account.uid);
  }
}

 

// 컴포넌트에서 콜백 실행 방식
dispatch(('setAccount', account).then() => {})

// action 정의 - store.js
export const actions = {
  setAccount({commit}, account){
    return new Promise((resolve, reject)=>{
      setTimeout(()=> {
        //Mutation 실행
        commit('currentUser', account);
        //콜백처리
        resolve();  
      }, 1000)
    })
  }
}
  • Getters : 공통 속성
    • 각 컴포넌트의 계산된 속성(computed) 공통 속정으로 정의
    • 여러 컴포넌트에서 동일한 computed 사용될 경우 Getters 정의해서 공통으로 쉽게 사용
    • 하위 모듈 Getters 호출 : this.$store.getter['경로명/함수명']
export const getters = {
  // 현재 로그인 상태 여부 확인 (user 정보 설정 여부로 true/false)
  isAuthenticated(state) {
    return !!state.user;
  },
  // 회원정보 불러오기
  getAccount(state) {
    return state.account;
  }
}

 

- 데이터 반영 흐름 : Dispatch -> Actions(commit) -> Mutations (State)

- 데이터 조회 흐름 : State -> Getters

반응형
반응형

에러 메시지

java: warning: source release 17 requires target release 17

Module demo SDK 11 is not compatiable with the source version 17.

Upgrade Module SDK in project settings to 17 or higher.

Spring boot 프로젝트 SDK 버전 : 17 

 

설치된 SDK 버전 : 11 

 

JAVA 버전이 달라 발생되는 에러임..

 

해결 방법

1) Spring boot 프로젝트 JAVA 11 버전 Generate

 

2) pom.xml 파일 버전 17 -> 11 변경

<java.version> 17 </java.version>

 

<java.version> 11 </java.version>

 

3) SDK 17 설치 및 Intellij SDK 17로 변경

- intellij sdk 17 로 변경

    [File] -> [Project Structure] -> [Proejct Settings] -> [Project] -> SDK 변경

 

반응형
반응형

Intellij Community을 이용하여 스프링부트 개발 진행


데모 프로젝트 오픈


프로젝트 구조

demo
├── HELP.md
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           └── demo
    │   │               └── DemoApplication.java
    │   └── resources
    │       └── application.properties
    └── test
        └── java
            └── com
                └── example
                    └── demo
                        └── DemoApplicationTests.java

 

1. mvnw / mvnw.cmd

Maven wrapper :

    - Maven 설치 및 path 설정 없이 Maven 프로젝트 진행 

    - Maven Build 도구

 

mvnw : 리눅스 버전

mvnw.cmd : 윈도우 버전

 

Maven wrapper 파일 업데이트 및 추가 명령어

mvn -N io.takari:maven:wrapper

 

Maven version 설정

mvn -N io.takari:maven:wrapper -Dmaven=3.3.3

 

2.  pom.xml

- POM ( Project Object Model) : 프로젝트 구조와 내용에 대한 정보

- 프로젝트 관리 및 빌드에 필요한 환경설정, 의존성 관리 등 정보

 

3. src/main/java

- 클래스, 인터페이스 등 자바 파일 위치

- 실제 소스 작성 위치

 

4. src/main/resources

- 정적 리소스 파일 위치

 

- 클라이언트의 요청에 대한 리소스 위치

 

-  application.properties 

  • 자동으로 로딩되는 규약
  • 우선순위가 중요
  • Key - Value 형식으로 애플리케이션 참조 가능

 

5. src/test

- TEST 관련 소스 기술

- 추후 포스팅 예정

 


프로젝트 실행

- Intellij 오른쪽 상단 재생 버튼 클릭

 

Demo application 실행 화면

반응형
반응형

스프링부트 프로젝트 진행 중 Log4j2 의존성을 추가하였지만 적용이 되지 않는 현상 발생

 

 

 

Log4j2 의존성 추가

pom.xml 에  log4j2 사용을 위하여 의존성 추가 (log4j2 - v.2.18.0)

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.18.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.18.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.18.0</version>
</dependency>

 

 

/src/resources/log4j2.xml 추가

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout
                    pattern="%style{%d{ISO8601}}{black} %highlight{%-5level }[%style{%t}{bright,blue}] %style{%C{1.}}{bright,yellow}: %msg%n%throwable" />
        </Console>

        <RollingFile name="RollingFile"
                     fileName="./logs/redis-save-binance.log"
                     filePattern="./logs/$${date:yyyy-MM}/redis-save-binance-%d{-dd-MMMM-yyyy}-%i.log.gz">
            <PatternLayout>
                <pattern>%d %p %C{1.} [%t] %m%n</pattern>
            </PatternLayout>
            <Policies>
                <!-- rollover on startup, daily and when the file reaches
                    10 MegaBytes -->
                <!-- <OnStartupTriggeringPolicy /> -->
                <SizeBasedTriggeringPolicy
                        size="10 MB" />
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingFile>
    </Appenders>

    <Loggers>
        <!-- LOG everything at INFO level -->
        <Root level="ERROR">
            <AppenderRef ref="Console" />
            <AppenderRef ref="RollingFile" />
        </Root>
    </Loggers>

</Configuration>

 

해결 방안

- 구글링 결과 spring-boot-starter / spring-boot-starter-web 에 logback 라이브러리가 들어가 있어 제외를 해줘야된다고 함

 

- mvn dependency:tree

  • 명령어를 통해 maven 종속관계를 확인
  • org.springframework.boot:spring-boot-starter-web:jar:2.6.3:compile
    • org.springframework.boot:spring-boot-starter-logging:jar:2.6.3:compile 존재
    • 이거를 제외해줘야됨
PS D:\test> mvn dependency:tree
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------< test >------------
[INFO] Building test 0.0.1
[INFO] --------------------------------[ war ]---------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:3.2.0:tree (default-cli) @ test ---
[INFO] test:war:0.0.1
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.6.3:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:2.6.3:compile
[INFO] |  |  +- org.springframework.boot:spring-boot:jar:2.6.3:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-autoconfigure:jar:2.6.3:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:2.6.3:compile
[INFO] |  |  |  +- ch.qos.logback:logback-classic:jar:1.2.10:compile
[INFO] |  |  |  |  \- ch.qos.logback:logback-core:jar:1.2.10:compile
[INFO] |  |  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.17.1:compile
[INFO] |  |  |  \- org.slf4j:jul-to-slf4j:jar:1.7.33:compile
[INFO] |  |  +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
[INFO] |  |  \- org.yaml:snakeyaml:jar:1.29:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-json:jar:2.6.3:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.13.1:compile
[INFO] |  |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.13.1:compile
[INFO] |  |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.13.1:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.13.1:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.13.1:compile
[INFO] |  |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.13.1:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.6.3:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.56:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.56:compile
[INFO] |  |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.56:compile
[INFO] |  +- org.springframework:spring-web:jar:5.3.15:compile
[INFO] |  |  \- org.springframework:spring-beans:jar:5.3.15:compile
[INFO] |  \- org.springframework:spring-webmvc:jar:5.3.15:compile
[INFO] |     \- org.springframework:spring-expression:jar:5.3.15:compile
[INFO] +- org.springframework.boot:spring-boot-starter-web-services:jar:2.6.3:compile
[INFO] |  +- com.sun.xml.messaging.saaj:saaj-impl:jar:1.5.3:compile
[INFO] |  |  +- jakarta.xml.soap:jakarta.xml.soap-api:jar:1.4.2:compile
[INFO] |  |  +- org.jvnet.staxex:stax-ex:jar:1.8.3:compile
[INFO] |  |  \- com.sun.activation:jakarta.activation:jar:1.2.2:runtime
[INFO] |  +- jakarta.xml.ws:jakarta.xml.ws-api:jar:2.3.3:compile
[INFO] |  |  \- jakarta.jws:jakarta.jws-api:jar:2.1.0:runtime
[INFO] |  +- org.springframework:spring-oxm:jar:5.3.15:compile
[INFO] |  \- org.springframework.ws:spring-ws-core:jar:3.1.2:compile
[INFO] |     \- org.springframework.ws:spring-xml:jar:3.1.2:compile
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:2.6.3:test
[INFO] |  +- org.springframework.boot:spring-boot-test:jar:2.6.3:test
[INFO] |  +- org.springframework.boot:spring-boot-test-autoconfigure:jar:2.6.3:test
[INFO] |  +- com.jayway.jsonpath:json-path:jar:2.6.0:test
[INFO] |  |  \- net.minidev:json-smart:jar:2.4.7:test
[INFO] |  |     \- net.minidev:accessors-smart:jar:2.4.7:test
[INFO] |  |        \- org.ow2.asm:asm:jar:9.1:test
[INFO] |  +- jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3:compile
[INFO] |  |  \- jakarta.activation:jakarta.activation-api:jar:1.2.2:compile
[INFO] |  +- org.assertj:assertj-core:jar:3.21.0:test
[INFO] |  +- org.hamcrest:hamcrest:jar:2.2:compile
[INFO] |  +- org.junit.jupiter:junit-jupiter:jar:5.8.2:test
[INFO] |  |  +- org.junit.jupiter:junit-jupiter-api:jar:5.8.2:test
[INFO] |  |  |  +- org.opentest4j:opentest4j:jar:1.2.0:test
[INFO] |  |  |  +- org.junit.platform:junit-platform-commons:jar:1.8.2:test
[INFO] |  |  |  \- org.apiguardian:apiguardian-api:jar:1.1.2:test
[INFO] |  |  +- org.junit.jupiter:junit-jupiter-params:jar:5.8.2:test
[INFO] |  |  \- org.junit.jupiter:junit-jupiter-engine:jar:5.8.2:test
[INFO] |  |     \- org.junit.platform:junit-platform-engine:jar:1.8.2:test
[INFO] |  +- org.mockito:mockito-core:jar:4.0.0:test
[INFO] |  |  +- net.bytebuddy:byte-buddy:jar:1.11.22:test
[INFO] |  |  +- net.bytebuddy:byte-buddy-agent:jar:1.11.22:test
[INFO] |  |  \- org.objenesis:objenesis:jar:3.2:test
[INFO] |  +- org.mockito:mockito-junit-jupiter:jar:4.0.0:test
[INFO] |  +- org.skyscreamer:jsonassert:jar:1.5.0:test
[INFO] |  |  \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
[INFO] |  +- org.springframework:spring-core:jar:5.3.15:compile
[INFO] |  |  \- org.springframework:spring-jcl:jar:5.3.15:compile
[INFO] |  +- org.springframework:spring-test:jar:5.3.15:test
[INFO] |  \- org.xmlunit:xmlunit-core:jar:2.8.4:test
[INFO] +- org.springframework.boot:spring-boot-starter-websocket:jar:2.6.3:compile
[INFO] |  \- org.springframework:spring-messaging:jar:5.3.15:compile
[INFO] +- org.springframework:spring-websocket:jar:5.3.15:compile
[INFO] |  \- org.springframework:spring-context:jar:5.3.15:compile
[INFO] +- org.springframework.boot:spring-boot-starter-data-redis:jar:2.6.3:compile
[INFO] |  \- io.lettuce:lettuce-core:jar:6.1.6.RELEASE:compile
[INFO] |     +- io.netty:netty-common:jar:4.1.73.Final:compile
[INFO] |     +- io.netty:netty-handler:jar:4.1.73.Final:compile
[INFO] |     |  +- io.netty:netty-resolver:jar:4.1.73.Final:compile
[INFO] |     |  +- io.netty:netty-buffer:jar:4.1.73.Final:compile
[INFO] |     |  +- io.netty:netty-codec:jar:4.1.73.Final:compile
[INFO] |     |  \- io.netty:netty-tcnative-classes:jar:2.0.46.Final:compile
[INFO] |     +- io.netty:netty-transport:jar:4.1.73.Final:compile
[INFO] |     \- io.projectreactor:reactor-core:jar:3.4.14:compile
[INFO] |        \- org.reactivestreams:reactive-streams:jar:1.0.3:compile
[INFO] +- org.springframework.data:spring-data-redis:jar:2.6.1:compile
[INFO] |  +- org.springframework.data:spring-data-keyvalue:jar:2.6.1:compile
[INFO] |  |  \- org.springframework.data:spring-data-commons:jar:2.6.1:compile
[INFO] |  +- org.springframework:spring-tx:jar:5.3.15:compile
[INFO] |  +- org.springframework:spring-aop:jar:5.3.15:compile
[INFO] |  +- org.springframework:spring-context-support:jar:5.3.15:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.33:compile
[INFO] +- com.googlecode.json-simple:json-simple:jar:1.1.1:compile
[INFO] |  \- junit:junit:jar:4.13.2:compile
[INFO] |     \- org.hamcrest:hamcrest-core:jar:2.2:compile
[INFO] +- org.json:json:jar:20180813:compile
[INFO] +- org.apache.httpcomponents:httpclient:jar:4.5.13:compile
[INFO] |  \- commons-codec:commons-codec:jar:1.15:compile
[INFO] +- org.apache.httpcomponents:httpmime:jar:4.5.13:compile
[INFO] +- org.apache.httpcomponents:httpcore:jar:4.4.15:compile
[INFO] +- org.quartz-scheduler:quartz:jar:2.3.2:compile
[INFO] |  \- com.mchange:mchange-commons-java:jar:0.2.15:compile
[INFO] +- com.github.ulisesbocchio:jasypt-spring-boot-starter:jar:2.1.2:compile
[INFO] |  \- com.github.ulisesbocchio:jasypt-spring-boot:jar:2.1.2:compile
[INFO] |     \- org.jasypt:jasypt:jar:1.9.3:compile
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.18.0:compile
[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.18.0:compile
[INFO] \- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.18.0:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.732 s
[INFO] Finished at: 2022-09-14T17:11:24+09:00
[INFO] ------------------------------------------------------------------------

 

pom.xml - spring-boot-starter-logging 제외

org.springframework.boot 

    <exclusions> 태그를 이용하여 spring-boot-starter-logging 를 제외시킴

        

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
     <exclusions>
        <exclusion>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

 

mvn dependency:tree 를 통해 확인

  • spring-boot-starter-logging 제외되어 있음
[INFO] test:test:war:0.0.1
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.6.3:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:2.6.3:compile
[INFO] |  |  +- org.springframework.boot:spring-boot:jar:2.6.3:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-autoconfigure:jar:2.6.3:compile
[INFO] |  |  +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
[INFO] |  |  \- org.yaml:snakeyaml:jar:1.29:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-json:jar:2.6.3:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.13.1:compile
[INFO] |  |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.13.1:compile
[INFO] |  |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.13.1:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.13.1:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.13.1:compile
[INFO] |  |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.13.1:compile

 

Log4j2 정상 적용 완료

반응형
반응형

스프링부트를 시작하기 앞서, 개발에 도움이 되는 IDE를 선택

자바 개발 진영에서 많이 사용되는 IDE 리스트

- Intellij Community

  • JetBrain사에서 만든 IDE
  • Community 버전은 무료
  • Ultimate 버전은 유로..
  • 자동 완성, 코드 네임 추천, 지능형 리펙토리 등 다양한 기능을 제공
  • JAVA 이외에 코틀린, 안드로이드, Groovy등의 언어 지원
  • Spring boot 프로젝트 생성 기능은 유로에서만 가능

Intellij

- Visual Studio

  • Microsoft 사에서 만든 IDE 
  • 무료
  • Visual Studio는 코드 편집기 -> 가벼움, 속도가 빠름
  • 확장 프로그램을 설치해야 Spring boot 개발 가능
  • 생각보다 많은? 확장 프로그램이 있어 여러 방면으로 활용이 가능
  • c++, python, java, 아두이노 등 언어 지원

Visual Code

- Spring tool Suite (STS)

  • Eclipse 베이스에 Spring Framework plugin이 추가된 IDE
  • 기본으로 플러그인이 추가 되어 있어 편리
  • 잘 정리된 문서 및 여러 플러그인 지원
  • Spring boot 개발 기본 IDE (필자도 STS로 시작)
  • JVM위에서 동작하므로 속도가 느림

Spring Tool Suite (STS)

 

Springboot  Initializr

 여러 IDE에서 프로젝트 생성 시 호환 이슈가 발생 가능 -> 이슈 최소화 Spring 에서 제공하는 initializr로 프로젝트 생성 

- https://start.spring.io/

 

  1. Project 선택 (빌드 도구 관리 선택)
    • Maven Project 
      • Apache Ant 대안으로 만들어짐
      • 다양한 라이브러리 관계를 Pom.xml 파일에 명시
      • 외부 저장소 다운로드 -> 로컬 캐시 모두 저장
    • Gradle Project
      • Groovy 언어를 사용한 Domain-specific-language를 사용
      • pom.xml 파일보다 간결 -> 가독성 우수
      • 빌드 속도가 Maven보다 10~ 100배 정도 빠름
  2. Spring Boot 버전 선택
    • SNAPSHOT : 아직 출시되지 않은 버전
    • M5 : 완전하지 않은 기능이 포함되 버전
    • 아무것도 없는 것 : 정식 배포 버전
  3. Depenecies : 사용하고자 하는 의존성 라이브러리 추가

4. Generate 버튼 선택

     - zip 파일이 다운로드 되고 원하는 IDE를 선택하여 프로젝트를 열면 개발 세팅 준비 완료

반응형
반응형

 

Spring과 Spring boot는 무슨 차이가 있는것일까?

 

Spring 이란 무엇인가??

 

- Spring Framework는 최신 Java 기반 엔터프라이즈 애플리케이션

- Spring은 특정 배포 환경에 불필요한 연결 없이 애플리케이션 레벨 비즈니스 로직에 집중할수 있음

 

* 앤터프라이즈 애플리케이션 : 왜 기업용 애플리케이션일까?

사용자 많고 대규모 데이터를 처리해야됨 -> 이러한 처리를 알아서 해주고 개발자는 개발에만 몰두

 

- Spring 특징

경랑 컨테이너
Ioc(Inversion of Control : 제어의 역전)
DI(Dependency Injection : 의존성 주입)
AOP(Aspect-Oriented Programming: 관점지향 프로그래밍)

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

  • 객체를 직접 생성하는 것이 아니라 외부에서 생성 후 주입 시켜주는 방식
  • DI를 통해 모듈간의 결합도가 낮아지고 유연해짐
  • 객체 == Bean, 자동으로 생성 및 소멸 관리 
  • Bean이 생성되는 곳 == Bean Container

- IoC (Inversion of Control : 제어의 역전)

  • 매소드나 객체의 호출 작업을 외부에서 결정
  • 객체의 실행 순서 :  객체 생성 -> 의존성 개입 (스프링이 만들어 놓은 객체 주입) -> 의존성 객체 매소드 호출
  • 모든 의존성 객체를 만들고 필요한 곳에 주입 

 

Spring boot란 무엇일까?

- 스프링 기반 앤터프라이즈 애플리케이션을 좀더 쉽게 만들어 낼수 있도록 도와주는 프레임워크

- 최소한의 설정으로 스프링 플랫폼과 서드파트 라이브러리를 사용할수 있음

- 스프링 프레임 워크를 더 편하게 자동적으로 하기 위함

- 편함.. 

- Embed Tomcat 이용 : 버전 관리 용이
- stater을 통한 Dependency 자동화
- 손쉬운 배포

- Spring-boot-stater 

   : 의존성 그룹으로 정리 할 수 있음, 간편하게 dependency (Likes npm) 주입 가능, maven or gradle

 

 

 

 

반응형

+ Recent posts