LANGUAGE/SPRING

SPRING #7 외부파일을 이용한 설정

옐옐루 2022. 7. 13. 15:49

ㅇ property 파일 가져오기 

ㅇ 컨테이너 만들때 env 셋팅 됨. property 에 있는 내용들은 env에 없으니 걔네들을 env에 추가해주는 방법 

ㅇ 관련된 속성 정보들을 properties 라고 부르고 , 그 속성과 속성값이 들어 있는 텍스트 파일 ( 때에 따라 환경이 바뀔 수 있는 정보들) 


 


env 이용 

1. 웹프로젝트 형태로 프로젝트 생성하기 (Spring MVC Project ) - environment 객체 쓰려면 웹프로젝트형태로!

2. admin.properties 파일 만들어 주기 (띄어쓰기 하지말기), 만약 id나 pw가 바뀔경우 이 properties 에서 수정해주면 됨 

properties (운영될때 사용자 모드에서 러닝타임 환경과 개발자 모드의 properties는 다를 수 있음) 

  ㅇ 메인함수에서 이 아이들을 acess 할 거고, acess 하는 방법 은 두가지임 

  ㅇ env 가져오는 방식 

3.-1 env 가져오는 방식 

   [AdminTestMain 만들어서 가지고 오기 ]

  1). 컨테이너 만들기 (만들면 environment)  -- 빈을만들기 위한 컨테이너가 아니라 env 객체 만드는 것

  2). environment 객체 가지고 오기 

  3). environment 에 속성 list 만들고, 

  4). 외부파일에 있는 속성값 담을 것 (properties 에 속성들 추가하기 )

  5) properties 의 내용들 가지고 와서 env에 쏙 넣기 

필요한 함수들 잘 보기

BUT 할대마다 env 가져와서 properties에 추가해서 이러한 과정을하기가 너무 귀찮을 수 있음 

따라서 이제부터 main 함수에서 빈을 가지고 올 것 , 어떤빈 ? admin 빈을 가지고 올 것 , 그럴려면 admin 빈이 생성되어 있

어야 하고 admin id와 pw 를 가지고 있는 객체임 따라서 아이디랑 pw 가 필요할때 getBean해서 쓰고자 함 

 

Bean 이용하는 방법 

ㅇ 객체가 막 실행되려고 할때 하는 함수 이용해서 env 객체 생성전에 properties를 env에 넣게끔 만들기 

1. Admin class 생성

  -- adminId와 adminPw 변수선언 

  -- Enveronment(springframework import) 변수 선언 

  -- implement EnvironmentAware 해주기 (객체 생성 직후 바로 함수 실행할 수 있도록 하는 것) 

  -- Admin override 해주기 (오버라이드 하면 자동적으로 컨테이너속 environment를 매개변수로 가지고오게됨)

  -- InitializingBean implement 해주기 

  -- override 함수에 adminId 변수에 , env에 있는 외부파일 admin.id의 속성을 받아와서 넣어놓기 

  -- 이제 얘네를 아무때나 불러올 수 있도록 admin bean 외부에다 만들어 주기 

2. CTX 파일 만들기 

 -- bean 만들기 

3. 메인함수에서 파싱



java,xml 파일 이용해서 가져오는 방법

 

1. ex2 에 properties 파일 2개 생성해주기 

  -- admin.properties 하나 , sub_admin.properties 둘 

 

2. Admininfo 만들기 

 

3. xml에서 두개의 파일을 한꺼번에 불러오기 

 -- <context:property-placeholder> 통해서 불러오기 (property-placeholder를 이용하면 속성값을 속성키워드로 가지고아서 proerty value 값에 외부파일에 설정해놓은 속성을 불러 올 수 있음)

 -- admininfo 객체 만들것 

 

4. AdminInfoTestMain 만들기 

 

 



3번째 방법 profile 활용

개발중 환경 127.0.0.1:8090

운영중 환경 168.165.10.30:80

똑같은 xml 파일인데, 개발중일때랑 운영중일때를 따로 나누어서 놓으려고 함 

객체를 파싱해서 객체를 생성하는 아이와, 운영중이냐 개발중이냐에 따라 다른아이를 파싱하도록 만들 것 

1. ServerInfo Class 만든 후 ipNum과 portNum 선언 후 @Data 써주기 

 -- 상황에 따라 얘의 포트번호가 8090일수도 80일수도 있음 

2. ctx 파일 2개 만들기(운영중, 개발중 나눠서)

ㅇ bean id도 동일, class도 동일 property name도 동일하지만 차이는 value 값이다

ㅇ 이 두개가 충돌이 나면 안되기 때문에 profile="run" or profile="dev"를 추가해주자 

ㅇ 메인함수에서 profile 을 가지고구분 

실행중일때
운영중일때

3. 메인함수 만들기 

ㅇ 두개를 한꺼번에 파싱하면 충돌나니 어떤 아이를 active 할건지 profile을 가지고 구분 (메인함수에서)

1) 어떤 아이를 active 할건지 물어봐야함 (scanner로)

2) div나 run 을 액티브 해라 

3) 컨테이너 로드 시키고, 그 안에 CTX 넣어주기 

 

 

 

 

 

반응형

'LANGUAGE > SPRING' 카테고리의 다른 글

SPRING#9 공통기능구현하기 2(AOP)  (0) 2022.07.14
SPRING #8 공통기능구현하기 1(AOP)  (2) 2022.07.13
SPRING #6 빈의 생명주기  (0) 2022.07.13
SPRING #5 DI 자동설정  (0) 2022.07.13
SPRING #4 DI 개념 및 활용  (0) 2022.07.12