ㅇ 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 |