ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 기본이해
    프로그래밍/SpringBoot 2020. 3. 22. 22:58
    반응형

        핵심 기능 : Spring Application, External Configuration, Profiles, Logging

        1. 스프링 부트는 프로그램이 실행되기 전 모든 Bean을 등록한다.

        2. Bean이란 객체를 미리 등록하는 것이다. 개인적으로는 언제든 쓸수 있도록 미리 등록하는 것으로 이해 했다.

        3. IOC와 컨테이너에 대해서는 이해가 부족하다. IOC의 경우 역전된다고 적혀있지만 이게 뭘 뜻하는건지는 아직 정확하게 이해하지 못했다. 컨테이너도 마찬가지로 박스를 연결한다고 되어있지만 아직 이해가 안되어 적지 못하였다.

        4. 스프링 부트는 어노테이션을 많이 사용한다. @을 어노테이션이라고하며 이를 통해 대부분 큰 소스코딩없이 코딩을 쉽게 도와준다 예를 들어 get set 을 설정한다고 하면 이를 @getter @setter 등으로 lombok의 기능을 꺼내어 어노테이션만으로 설정이 가능하게뜸 도와주는 역활이다.


        5. 아직 자세히 공부하지 않아 모르겠으나 redis, swagger, security, mybatis등을 개인공부를 하였고 게시판을 만드는게 목표다.

        1. Spring Application SpringApplication는 메인메소드를 실행하기 위한 하나의 메소드입니다..

        public static void main(String[] args) {
          SpringApplication.run(MySpringConfiguration.class, args);
        }
        1. External Configuration(외부 구성) 외부 구성은 말그대로 모든 외부와의 구성을 말하는 것입니다.. 예를 들어 DB와의 연동을 하려고 할때 데이터소스는 외부 구성 속성에 의해 제어됩니다. 최소한 spring.datasource.url속성 을 설정하여 URL을 지정해야 합니다. 그렇지 않으면 Spring Boot는 내장 데이터베이스를 자동 구성하려고 시도합니다.

        spring.datasource.url=jdbc:mysql://localhost/test
        spring.datasource.username=dbuser
        spring.datasource.password=dbpass
        spring.datasource.driver-class-name=com.mysql.jdbc.Driver

        참조: https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html

        1. Profiles Profiles는 테스트하기 위한 소스 라고 할 수있다. 서비스를 테스트 하기 위해 메인을 직접 건드리는 것은 매우 위험하듯 테스트 소스를 거친다음 메인을 건드리게 된다. 즉 이를 위해 존재하는 것이 Profiles이다. Profiles를 통해 DEV(개발), TEST(테스트)로 구분하여 소스를 나누게 되면 DEV와 TEST라는 키워드를 통해 소스 실행되는 것이 달라지게 된다. 이를 통해 데이터베이스 접속 계정 및 로그 등을 구분하여 관리하는 것이 가능해진다. 하지만 실상은 TEST를 이용하지않고 보통 바로 개발을 들어간다.

        Spring Boot 기반으로 개발한 서비스가 구동될 Profile을 지정하는 가장 확실한 방법은 운영체제의 환경 변수(Environment Variable)에 Profile을 설정하는 것이다. 환경 변수의 이름은 SPRING_PROFILES_ACTIVE이다. 이 방법은 특히 개발환경에서 구동시 IDE 레벨에서 별도의 JVM 옵션을 설정하지 않아도 되기 때문에 가장 편리한 방법이다. 개발자는 자신의 개발 PC에 환경 변수를 설정해두면 IDE에 구애받지 않고 언제나 해당 Profile로 구동할 수 있다. 운영체제 별로 설정 방법은 아래와 같다. Windows: 시작 → 설정 → 제어판 → 시스템 → 고급 시스템 설정 → 환경 변수 → 시스템 변수 → 새로 만들기 → 변수 이름: SPRING_PROFILES_ACTIVE → 변수 값: dev → 확인 → 확인, 완료시 운영체제를 재시작해야 적용된다.

        RHEL/CentOS: 아래와 같이 환경 변수를 추가한다.

        ### 방법 1: 운영체제 환경 변수에 실행할 프로파일을 설정
        $ vi $HOME/.bashrc
        export SPRING_PROFILES_ACTIVE=dev

        $ $HOME/.bashrc

        ### 방법 2: JVM 옵션으로 실행할 프로파일을 전달
        $ java -Dspring.profiles.active=dev -jar some-project.jar

        리눅스에서 설정한 Profile을 확인하는 방법이다.

        package com.jsonobject.example;

        import org.springframework.core.env.Environment;

        @Component
        public class AnyBean {

          @Autowired
          private Environment environment;

          public String[] getActiveProfiles() {

              return environment.getActiveProfiles();
          }
        }

        -참조: https://jsonobject.tistory.com/220

        1. Logging

        LOG를 남기기위한 방법중 하나이다.
        보통 LOG는 Level에 따라 나누어지며
        Level에 따라 오류나 실행 명령이 Log에 적히게된다.
        Spring Boot에서는 Log4j와 Logback을 많이 사용한다.

        참조: https://www.sangkon.com/hands-on-springboot-logging/

        웹 어플리케이션 :

        1. MVC

        MVC 패턴은
        Model
        View
        Controller
        를 줄여서 MVC패턴이라고 한다.
        Model은 간단히 변수라고 생각하면 되고
        View는 GUI를 의미한다.
        Controller는 Model에서 가져온 값을 View에게 전달하는 역활을 한다.
        즉 컨트롤러가 중간자 역활을 하며 이를통해 사용자에게 view를 통해 정보를 전달한다.
        1. Embedded(내장) Spring Boot는 Tomcat등 많은 라이브러리들이 내장되어서 jar나 war를 생성한다. Datasource를 직접 구현하여 사용할 수 있지만, 코드 내에서 connection을 모두 관리하는 것은 비효율적이다. 이유는 하나의 WAS에 여러가지 프로그램이 실행될 수 있으며, 이 모든 프로그램마다 각각의 Datasource를 가지고 connection을 관리한다면 개발자 또는 운영자가 전체를 관리하기 힘들어 진다. 그래서 WAS내에서 모든 connection을 관리하는 방법이 효율적이며, spring boot 또한 내장되어 있는 WAS에 connection pool을 제공한다.

        참조: https://deepweller.tistory.com/6

        1. Container

        MYSQL 연계 :

        Mybatis

        관련 package

        1. lettuce (lettuce-core)

        2. jwt (java-jwt)

        3. auth0 (java-jwt)

        4. jsonwebtoken (jjwt)

        5. mapstruct (mapstruct)


    반응형

    댓글

Designed by Tistory.