본문 바로가기

개발/Java & Spring

[Spring] Properties 를 적용해서 중요한 값들을 숨겨보자!<부제: 아 털렸다!> (Spring/Spring boot/ Java Config) - 개발일기A [8]

사실 너무 기초적인 내용이기도하고 글 쓸 생각 없었는데,,

아 저 AWS 98 만원 과금됐어요 ㅎ_ㅎ  


처음에 이클립스랑 깃 연동하는거 연습한다고 아무 프로젝트나 올린다는게 AWS 보안증명 키도 같이 올려버렸는데,

하루? 만에 찾고 다시 지웠음에도 아 오늘 정말 놀라 자빠지는줄 알았다.


EC2 인스턴스 20개는 생겨있고, 98만원 과금 딱 찍혀있음 ㅠㅠ

구제신청 하긴 했는데 되겠지,, 아니면 나 정말 난몰라 ..!



결론은 "보안"의 중요성을 느꼈다이고,


그럼 과거의 나처럼 되지 않기 위해 DB 계정, AWS의 경우 EC2, S3등 "키" 값으로 자신을 증명하는 값들은 직접 삽입하여 그 코드가 돌아다니지 않도록 하기 위해, 그러한 값들은 따로 프로퍼티 파일에 보관하여 불러다 쓰도록 설정해보자 



Spring boot, Spring 5 / Spring 4 순서로 기술하겠다.

왜냐면 의도한건 아닌데 내가 진행하는 세 프로젝트가 버전이 다 다르다 ㅎㅓ허 어쩌다 그렇게된거지 



1) Spring boot, Spring 5.0

Spring 을 더 쉽게 사용해주는 것 답게 따로 설정해줄 필요도 없다.


먼저, application.yml 또는 application.properties를 사용하는 경우(기본 클래스패스)

amazonProperties:
  region: OO
  accessKey: OO 
  secretKey: OO
  bucketName: OO
애증의 AWS 설정 ^____^ 아 나 되게 쿨한것같아!

다음과 같은 프로퍼티 값들이 설정되었다면, 
 @Value("${amazonProperties.bucketName}")
    private String bucket;
그냥 이렇게 불러다 쓰면 된다!


별도의 properties 파일을 생성했다면, (main/resources 아래!!!!)

사용하려는 클래스 상단에 다음과 같은 어노테이션 하나만 추가해주자

@PropertySource("classpath:mail(파일명).properties")

그리고 똑같이 @Value(~~~~) 하면 된다. 참 쉽쥬?


2) Spring 4.0 

Spring 4.0에서 프로퍼티를 불러다 쓰는 방법은 여러가지가 있는데,

나는 무조건 @Value를 쓰고 싶어서 무한 구글링 ,, 여러 방법이 있던데 설정할 것도 너무 많고 복잡하더라 ㅠ__ㅠ


Spring 4.0도 

@PropertySource 쓰는건 똑같다. 단, Configuration 하나만 추가해주자

@Configuration
@PropertySource("classpath:setting.properties")
public class Config {
	@Bean
	public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer(){
		return new PropertySourcesPlaceholderConfigurer();
	}
}
그리고 똑같이 @Value를 사용하면 완료!


모두 보안 조심하새오 .. 저처럼 되지 마시구 ..