본문 바로가기
컴퓨터공학/스프링

DB 접속정보 git에 공유되지 않도록 설정하기

by 유리병 2023. 12. 10.

목차


     

     

     

    아래와 같이 접속정보가 Java코드 내에 있어 git으로 공유되면 여러 문제가 발생할 수 있다.

    @Bean(destroyMethod = "close")
    public HikariDataSource dataSource() {
    	HikariDataSource dataSource = new HikariDataSource();
    	
    	dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
    	dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
    	dataSource.setUsername("testuser");
    	dataSource.setPassword("test1234");
    	return dataSource;
    }

     

     

     

    DB 접속정보를 다른 파일에 저장하기

    db.properties파일 생성

    src/main/resources/db.properties 파일을 생성하고 데이터베이스 접속 정보를 입력한다.

    db.driver=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
    db.url=jdbc:log4jdbc:mysql://localhost:3306/test
    db.username=testuser
    db.userpassword=test1234

    이때 앞의 속성 명은 자유롭게 변경해도 무관하다. 이후에 찾아서 쓰기 쉽도록 설정하자!

    참고로 username등은 PC의 username등과 혼동되어 에러가 날 수 있으니 가급적 스프링이 착각할 수 없도록 속성명을 설정하자.

     

    properties파일을 빈으로 등록하기

    //property 설정
    @Bean
    public static PropertySourcesPlaceholderConfigurer property() {
    	PropertySourcesPlaceholderConfigurer property = new PropertySourcesPlaceholderConfigurer();
    
    	property.setLocations(new ClassPathResource("db.properties"));
    	return property;
    }

     

     

    Config파일에 DB 접속정보를 담을 필드 생성

    public class MVCConfig implements WebMvcConfigurer{
    	//DB접속정보
    	@Value("${db.driver}")
    	private String driver;
    	@Value("${db.url}")
    	private String url;
    	@Value("${db.username}")
    	private String username;
    	@Value("${db.userpassword}")
    	private String userpassword;
    	... ...
    }

    @Value Annotation을 사용하여 아까 설정한 속성값들을 필드에 맵핑한다.

    이때 @Value annotation은 롬복의 @Value가 아니라 spring의 value이니 주의하자

     

    Datasource에 properties파일로 만든 필드를 사용해서 DB 접속정보 입력하기

    @Bean(destroyMethod = "close")
    public HikariDataSource dataSource() {
    	HikariDataSource dataSource = new HikariDataSource();
    	
    	dataSource.setDriverClassName(driver);
    	dataSource.setJdbcUrl(url);
    	dataSource.setUsername(username);
    	dataSource.setPassword(userpassword);
    	return dataSource;
    }

     

    .gitignore에 properties파일을 추가하기

    .gitignore로 해당 파일이 깃에 등록되지 못하게 한다!