2020년 11월 2일 월요일

Spring boot 의 application.properties 사용방법

지금까지 spring boot 에서 application.properties 를 

사용해본 방법은 아래의 2 가지 상황이다.

  1. 서버의 환경 변수에 따른 dev, prd 등 의 능동적 적용
  2. 복수의 properties 파일을 적용

위에서 언급한 1,2번에 대한 사용 법을 안내 한다.

  • 서버의 환경 변수에 따른 dev, prd 등 의 능동적 적용
  • - 사용 이유 : 
    소스의 수정 없이 서버 인프라의 환경에 따라 application.properties 의 값을 적용하고자 할 경우

    - 방법 : 
    서버에서 VM argument 로 
    -Dspring.profiles.active=prd 와 같이 구동시 주입. 
    소스 상에서는  
    application-default.properties 
    application-prd.properties 
    와 같이  
    application-[값].properties 
    으로 구분함. 
    만약 구동 중  spring.profiles.active VM argument 값 없을경우 default 가 적용됨.

     

  • 복수의 properties 파일을 적용
  • - 사용 이유 : 
    패키지별 설정파일을 따로 분리하고자 하여 사용 하게 됨.

    - 방법 : 

     -Dspring.config.additional-location=classpath:config/*/ 

    위와같이 VM argument 적용하면 /src/main/resources/config/모든폴더/application.properties 를 찾아 적용한다. 

    이때 기존에 존재하던 classpath:application.properties 파일이 먼저 적용 되고 

    추가 파일은 override 되므로 참고하길 바란다.

     


     

     

      

    2020년 9월 24일 목요일

    SOAP 통신 주의할점. 아무리 봐도 왜 오류나는지 모른다면

    SOAP 통신을 Postman 혹은 curl 로 테스트를 해보고자 하였으나

    오류가 발생 하였다.

    Http header 와 body 를 아무리 보고 또 봐도 틀린게 없는데 왜 안되는걸까?

    왜지? 2일 정도를 보고 또 보다가 

    성공한 사람의 request 를 raw 데이터로 비교 해봐도 모르겠다 뭐지??

    이때 SOAP UI 테스트 툴로 테스트 하니 성공 함.

    기존 request 와 SOAP UI 를 사용한 request 의 다른점을 확인하기 위해 

    로컬에 네트워크 scanner 를 키고 캡쳐를 했다.

    postman 과 SOAP UI.

    결과는 환장 함.


    header 에 SOAPAction key 로

    Endpoint 에서 사용할 function 을 정의 하는데 

    - Postman  : FN_TEST

    - SOAP UI : "FN_TEST"

    맞다. 큰따움표다 ㅋ

    SOAPAction : "FN_TEST" 여야 하는것이었다.


    이게 SOAP 의 규약 인지 

    아니면 내가 진행 하는 프로젝트의 룰인지는 더 찾아봐야 하겠으나

    뭐니 이게...

    2020년 8월 3일 월요일

    JPA 메서드로 쿼리 생성시 주의 사항

    메서드로 쿼리를 만들다 보면 분명 정확하게 했는데 
    Unable to locate Attribute  with the the given name [] on this ManagedType []
    이런 오류를 뱉으면서 안될때가 있다.

    뭐 당연히 변수 명은 camelcase 로 정의 했을것이고
    method 에서는 대문자로 시작했지.

    Entity
    private String aTest;

    Repository
    private findByATest(String aTest);

    이렇게 하면 문제 없는거 아냐?

    문제 없을것 같지만 안된다

    문제의 원인은 
    위 Entity 에서 정의한 변수명 룰에 있다.
    첫 시작 소문자가 1자리면 안된다.

    예를 들어 
    Entity
    private String aaTest;

    Repository
    private findByAaTest(String aTest);

    로 수정 후 테스트 시 문제 없는것을 확인 했다.

    문제를 알았으니 왜 인지를 알아야 하는데
    아직 모르겠다.
    왜일까..

    이런 저런 정보를 보았을때 Java Bean naming conventions 에 영향을 받는것이 아닌가 싶다..


    -- 정리 --
    해당 문제를 피해갈수 있는 방법
    1. 변수의 시작을 무조건 소문자 한자리로 시작 하지 않는다.
        aTest => aaTest
    2. 룰에 맞지 않는 변태 같은 짓이지만 변수의 시작을 대문자로 바꾼다.
        aTest => ATest

    해당 문제가 발생 한 이유는
    Entity 에 테이블의 접두사 T 를 항상 붙였다.
    예를 들어 code 관련 테이블은 TCode
    이럴때 당연히 camelcase 로 변경 하면 tCode 인데 
    이것때문에 문제가 생겼다.

    우선 근본적인 원인을 찾기 전까지는 접두사 T 를 붙이는 짓은 피하자.

    2020년 3월 21일 토요일

    git submodule 사용시 참조

    project 를 git 에 등록해서 관리하는데
    해당 project 하위에 타 git project 를 등록해서 사용할 경우
    이를 지원 하기 위해 git submodule 을 쓴다.

    설명은 아래 블로그에.

    https://pinedance.github.io/blog/2019/05/28/Git-Submodule

    2020년 3월 17일 화요일

    docker 한글

    docker 이미지로 tomcat 을 구동하는데 파일 작성시 파일의 한글이 깨지는 문제가 발생 했다.
    문제는 docker image 의 charset 을 설정 하지 않아서 발생 한 문제.

    -e LC_ALL=C.UTF-8

    옵션 추가 후 해결.

    ko_KR.UTF-8 로 변경 하기 위해서는 image 에 언어셋을 설치 해 주어야 하는데
    Dockerfile 에 아래 내용을 추가 해야 한다.

    RUN apt-get update && apt-get install -y locales RUN locale-gen ko_KR.UTF-8 ENV LC_ALL ko_KR.UTF-8


    아래의 블로그 사용자 님의 내용을 참고 하였다.

    https://www.44bits.io/ko/post/setup_linux_locale_on_ubuntu_and_debian_container

    2020년 3월 1일 일요일

    react-native plugins 정리

    React-Native 의
    자주 사용하는 혹은 사용하려고 고려중인 플러그인 목록 정리

    마지막 수정일 20.03.02


    • react-native-calendars
      • 달력
    • react-native-device-info
      • 하드웨어 정보
    • react-native-dropdownalert
      • status bar 에서 내려오는 alert
    • react-native-exit-app
      • App 종료
    • react-native-firebase
      • firebase
    • react-native-i18n
      • multi language
    • react-native-linear-gradient
      • linear gradient
    • react-native-modalbox
      • 웹의 모달 그것
    • react-native-navigation-bar-color
      • status bar 색상
    • react-native-permissions
      • 권한 허용
    • react-native-simple-toast
      • toat
    • react-native-swipe-list-view
      • 스와이프 가능한 list view
    • react-native-vector-icons
      • vector icons
    • react-navigation
      • navigation
    • rn-fetch-blob
      • blob 으로 fetch
      • 이게 종종 필요함. raw 타임으로 데이터 받아와야 할때
    • tfjs-react-native
      • google 의 tensorflow
    • react-native-image-picker
      • image picker

    2020년 2월 27일 목요일

    Mac OS Nodeclipse 'node' 찾지 못할때

    eclipse 에 nodeclipse 설치 후 js 파일 열면 아래와 같은 오류 메세지가 발생 했다.










    뭐 내용 보면 node 실행 파일을 못찾았다 이런 내용인데
    nodeclipse 설정의 파일 path 봐도 맞고
    node 파일 및 폴더 권한 봐도 맞고
    뭐징? 하는데 처리 방법이 있더라.

    아래는 내가 해본 내용들


    1. node 버전 확인 및 path variable 등록 되었나 확인
      • node -v
    2. 권한 변경
      • chmod 755 /usr/local/bin
      • chmod 755 /usr/local/bin/node
    3. 해결책
      • Eclipse 패키지 내의 eclipse.ini 에 아래 내용 등록
      • -Dorg.eclipse.wildwebdeveloper.nodeJSLocation=/usr/local/bin/node

    끝.

    아래 내용은 검색 되라고 오류내용 풀어 씀.

    Missing node.js
    Could not find node.js. This will result in editors missing key features.
    Please make sure node.js is installed and that your PATH environment variable
    contains the location to the 'node' executable.


    2020년 2월 11일 화요일

    rest-api-query-search-language-more-operations

    요즘 취미로 모바일 앱을 개발 하고있다.
    뭐 취미일수도 있고 광고비 벌려고 하는걸수도 있고.. ㅎ

    근데 문제가 혼자 서버사이드, 프론트 엔드 까지
    전부 개발을 하려니 시간도 너무 오래 걸리고
    서버 개발하다 프론트 엔드 개발하다 보면 어? 뭐 하고 있었지? ㅡㅡ;

    그래서 생각한게
    서버는 단순히 저장 용도로만 쓰자.
    서버에는 DB 접근 로직만 넣고
    리턴 받은 데이터로 클라이언트 에서 비즈니스 로직 개발.

    이를 위해 처음에는 url query 기반
    DB select 프로그램을 직접 만들어 봤는데 역시 개판 ㅋㅋ
    Spring 에 찾아 보니 예제가 있더라.

    참고 하시라.
    https://www.baeldung.com/rest-api-query-search-language-more-operations

    2020년 1월 9일 목요일