프로그래밍 정리/Spring

Spring - bean을 이용해 .properties 값 가져오기

Wooni0477 2019. 12. 26. 15:27
반응형
Spring - Bean을 이용해 .properties 값 가져오기



XML을 이용해 가져오는 방식과 비슷하다.

앞서 얘기한 applicationCTL.xml 대신 AdminConnection.java를 사용한다.


1. xml파일이 있는 경로에 .properties 파일을 만든다.




2. DI 방식으로 만든다.

class 상단에 @Configuration

변수에 @Value(값)

메소드에 @Bean을 붙여준다.

※DI 방식 bean으로 가져오는 방법 참고 : https://cloud0477.tistory.com/59
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@Configuration
public class ApplicationConfig {
 
    @Value("${admin.id}") //Properties() 에서 값을 가져옴
    private String adminId;
    @Value("${admin.pw}") //Properties() 에서 값을 가져옴
    private String adminPw;
    @Value("${sub_admin.id}") //Properties() 에서 값을 가져옴
    private String sub_adminId;
    @Value("${sub_admin.pw}") //Properties() 에서 값을 가져옴
    private String sub_adminPw;
    
    @Bean
    public static PropertySourcesPlaceholderConfigurer Properties() {
        PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
        
        Resource[] locations = new Resource[2]; //배열 선언
        locations[0= new ClassPathResource("admin.properties"); //경로1를 배열에 삽입
        locations[1= new ClassPathResource("sub_admin.properties"); //경로2를 배열에 삽입
        configurer.setLocations(locations);
        
        return configurer; //properties() 객체 반환
    }
    
    @Bean
    public AdminConnection adminConfig() { //AdminConnection 객체 반환
        AdminConnection adminConnection = new AdminConnection();
        adminConnection.setAdminId(adminId);
        adminConnection.setAdminPw(adminPw);
        adminConnection.setSub_adminId(sub_adminId);
        adminConnection.setSub_adminPw(sub_adminPw);
        return adminConnection;
    }
    
}
cs

-main.java 에서 값을 가져온다.
컨테이너 생명주기 참고 : https://cloud0477.tistory.com/59

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void main(String[] args) {
        
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class);
        AdminConnection connection = ctx.getBean("adminConfig", AdminConnection.class);
        
        System.out.println("adminID : " + connection.getAdminId());
        System.out.println("adminPW : " + connection.getAdminPw());
        System.out.println("sub_adminID : " + connection.getSub_adminId());
        System.out.println("sub_adminPW : " + connection.getSub_adminPw());
        
        ctx.close();
        
    }
cs








-------모든소스-------


adminConnection.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class AdminConnection implements InitializingBean, DisposableBean {
 
    private String adminId;
    private String adminPw;
    private String sub_adminId;
    private String sub_adminPw;
    
    public void setAdminId(String adminId) {
        this.adminId = adminId;
    }
    
    public void setAdminPw(String adminPw) {
        this.adminPw = adminPw;
    }
    
    public void setSub_adminId(String sub_adminId) {
        this.sub_adminId = sub_adminId;
    }
    
    public void setSub_adminPw(String sub_adminPw) {
        this.sub_adminPw = sub_adminPw;
    }
    
    public String getAdminId() {
        return adminId;
    }
    
    public String getAdminPw() {
        return adminPw;
    }
    
    public String getSub_adminId() {
        return sub_adminId;
    }
    
    public String getSub_adminPw() {
        return sub_adminPw;
    }
}
 
cs




main.java

1
2
3
4
5
6
7
8
9
10
11
12
public static void main(String[] args) {
        
        AbstractApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationCTX.xml");
        
        AdminConnection connection = ctx.getBean("adminConnection", AdminConnection.class);
        System.out.println("adminID : " + connection.getAdminId());
        System.out.println("adminPW : " + connection.getAdminPw());
        System.out.println("sub_adminID : " + connection.getSub_adminId());
        System.out.println("sub_adminPW : " + connection.getSub_adminPw());
        
        ctx.close();
}
cs



admin.properties, sub_admin.properties



ApplicationConfig.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@Configuration
public class ApplicationConfig {
 
    @Value("${admin.id}") //Properties() 에서 값을 가져옴
    private String adminId;
    @Value("${admin.pw}") //Properties() 에서 값을 가져옴
    private String adminPw;
    @Value("${sub_admin.id}") //Properties() 에서 값을 가져옴
    private String sub_adminId;
    @Value("${sub_admin.pw}") //Properties() 에서 값을 가져옴
    private String sub_adminPw;
    
    @Bean
    public static PropertySourcesPlaceholderConfigurer Properties() {
        PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
        
        Resource[] locations = new Resource[2]; //배열 선언
        locations[0= new ClassPathResource("admin.properties"); //경로1를 배열에 삽입
        locations[1= new ClassPathResource("sub_admin.properties"); //경로2를 배열에 삽입
        configurer.setLocations(locations);
        
        return configurer; //properties() 객체 반환
    }
    
    @Bean
    public AdminConnection adminConfig() { //AdminConnection 객체 반환
        AdminConnection adminConnection = new AdminConnection();
        adminConnection.setAdminId(adminId);
        adminConnection.setAdminPw(adminPw);
        adminConnection.setSub_adminId(sub_adminId);
        adminConnection.setSub_adminPw(sub_adminPw);
        return adminConnection;
    }
    
}
cs


반응형