티스토리 뷰
xml을 거치지 않고 Bean을 호출하는 방식중 하나를 소개하려고한다.
AdminConnection.java
package com.java.tes;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class AdminConnection implements InitializingBean, DisposableBean{
private String adminId;
private String adminPw;
private String sub_adminId;
private String sub_adminPw;
public String getAdminId() {
return adminId;
}
public void setAdminId(String adminId) {
this.adminId = adminId;
}
public String getAdminPw() {
return adminPw;
}
public void setAdminPw(String adminPw) {
this.adminPw = adminPw;
}
public String getSub_adminId() {
return sub_adminId;
}
public void setSub_adminId(String sub_adminId) {
this.sub_adminId = sub_adminId;
}
public String getSub_adminPw() {
return sub_adminPw;
}
public void setSub_adminPw(String sub_adminPw) {
this.sub_adminPw = sub_adminPw;
}
@Override
public void destroy() throws Exception {
System.out.println("destroy()");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("afterPropertiesSet()");
}
}
adminId와 adminPw Sub_adminId와 Sub_adminPw 값을 받는 클래스 이고
Override된 destroy()와 afterPropertiesSet() 중 destroy() Bean의 소멸시기를 알아보기 위한
afterProperties는 값이 모두 입력됬는지 알아보는 메서드입니다
ApplicationConfig.java
package com.java.tes;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
@Configuration
public class ApplicationConfig {
@Value("${admin.id}")
private String adminId;
@Value("${admin.pw}")
private String adminPw;
@Value("${sub_admin.id}")
private String sub_adminId;
@Value("${sub_admin.pw}")
private String sub_adminPw;
@Bean //1Bean
public static PropertySourcesPlaceholderConfigurer Properties() {
PropertySourcesPlaceholderConfigurer configurer
= new PropertySourcesPlaceholderConfigurer();
Resource[] locations = new Resource[2];
locations[0] = new ClassPathResource("admin1.properties");
locations[1] = new ClassPathResource("admin2.properties");
configurer.setLocations(locations);
return configurer;
}
@Bean //2Bean
public AdminConnection adminConfig() {
AdminConnection adminConnection = new AdminConnection();
adminConnection.setAdminId(adminId);
adminConnection.setAdminPw(adminPw);
adminConnection.setSub_adminId(sub_adminId);
adminConnection.setSub_adminPw(sub_adminPw);
return adminConnection;
}
}
@Configuration는 Bean을 불러오기 위한 준비단계이고
@Value Property안에 있는 값을 가져와서 적용해줍니다.
이 Value를 가져오기 위한 준비로 ${가져오기위한 property안에 있는 값}를 해줘야합니다.
밑에 보면 private String (변수명)이 있는데 가져온값을 이곳에 주입해줍니다.
@Bean을 통해 Bean으로 지정할 부분을 정해줍니다. 이때 Bean의 id는 Bean밑에 선언된 메서드입니다.
@Bean //2Bean
public AdminConnection adminConfig() {
AdminConnection adminConnection = new AdminConnection();
adminConnection.setAdminId(adminId);
adminConnection.setAdminPw(adminPw);
adminConnection.setSub_adminId(sub_adminId);
adminConnection.setSub_adminPw(sub_adminPw);
return adminConnection;
}
해당부분에서 Bean의 아이디는 adminConfig() 입니다.
밑의 Properties는 static을 활용해 만든 메서드입니다.
이 메서드는 해당 클래스가 호출되면 자동으로 사용되는 메서드입니다.
그래서 경로값을 정해두면 이 메서드가 가장 먼저 호출됩니다.
public static PropertySourcesPlaceholderConfigurer Properties() {
PropertySourcesPlaceholderConfigurer configurer
= new PropertySourcesPlaceholderConfigurer();
Resource[] locations = new Resource[2];
locations[0] = new ClassPathResource("admin.properties");
locations[1] = new ClassPathResource("admin2.properties");
configurer.setLocations(locations);
return configurer;
}
즉 부분에서는 값을 가져올 xml의 파일의 경로를 지정해줍니다.
순서를 정리하면
경로지정> 해당 경로에 있는 값을 가져와서 value값에 넣어줌 >그 Value값을 adminConfig()안에 넣어줌
mainclass에 호출되서
실행
package com.java.tes;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class MainClass {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx= new
AnnotationConfigApplicationContext(ApplicationConfig.class); // 클래스 등록 ApplicationConfig 안의 내용을 읽기 위해
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();
}
}
이제 메인에서 값이 저장된 해당 값들을 불러와 볼게요
ctx라는 변수안에 ApplicationConfig라는 클래스를 등록하고
커넥션을 ctx.getBean을 통해 자기 가 지정한 Bean의 아이디값을 가져오고,
print문을 통해 출력했습니다.
아래는 properties 파일입니다 참고하면 좋을 것 같습니다.
admin.id=admin
admin.pw=12345
sub_admin.id=subadmin
sub_admin.pw=123451
- Total
- Today
- Yesterday
- 빅-오
- prometheus
- rabbitmq
- config
- springcloud
- producer
- Logstash to ElasticSearch
- zipkin
- 오늘저녁 삼겹살
- github
- Gateway
- elasticSearch
- 운동일기
- kafka
- LoadBalancer
- Kafka Connect
- git
- JWT
- MariaDB
- 미래의나에게동기부여
- 운동
- Spring + ELK
- Logstash 활용
- 루틴기록
- UserService
- Feign
- MSA
- docker
- ACTUATOR
- consumer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |