SpringBoot 자원 초기 화 로드 방식
5795 단어 SpringBoot자원 초기 화로드
평소 업무 모듈 개발 과정 에서 전체적인 임무,캐 시,스 레 드 등 초기 화 작업 을 해 야 할 수 있 습 니 다.그러면 이 문 제 를 어떻게 해결 합 니까?방법 은 여러 가지 가 있 지만 구체 적 으로 어떻게 선택해 야 합 니까?
2.자원 초기 화
1.자원 초기 화 를 하려 면 springboot 시작 과정 을 알 아야 합 니 다.(여기 서 대체적으로 시작 과정,상세:https://www.jb51.net/article/133648.htm
앞의 분석 에 따 르 면 Spring-boot 용기 의 작 동 절 차 는 전체적으로 2 부분 으로 나 눌 수 있다.
위 에서 알 수 있 듯 이 우 리 는 이 두 개의 인 터 페 이 스 를 실현 하면 우리 의 자원 초기 화 임 무 를 완성 할 수 있 습 니 다.그들의 로드 는 용기 가 완전히 시작 되 기 전에 볼 수 있 습 니 다.이 두 가지 차이 점 은 전자의 run 방법 매개 변 수 는 String..args 이 고 문자열 에 직접 들 어 갑 니 다.후자 의 매개 변 수 는 ApplicationArguments 로 매개 변 수 를 봉인 하 였 습 니 다.기능 상 으로 는 같다.또한@Order 주 해 를 사용 하여 자원 로드 의 우선 순 위 를 실현 할 수 있 습 니 다.값 이 작 을 수록 우선 순위 가 높 습 니 다.실례 는 다음 과 같다.
@Component
@Order(1)
public class MyCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("...init resources by implements CommandLineRunner");
}
}
@Component
@Order(2)
public class MyApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments applicationArguments) throws Exception {
System.out.println("...init resources by implements ApplicationRunner");
}
}
3、@PostConstruct구체 적 인 Bean 의 실례 화 과정 에서 실 행 됩 니 다.@PostConstruct 주해 방법 은 구조 방법 다음 에 실 행 됩 니 다.순서 가 Constructor>@Autowired>@PostConstruct>정적 방법 이기 때문에 이 주 해 는 구조 방법 에서 의존 구성 요 소 를 사용 해 야 하 는 어색 함 을 피 할 수 있 습 니 다.(이에 대응 하 는 것 은@PreDestroy 도 있 습 니 다.대상 이 사라 지기 전에 실 행 됩 니 다.원리 차 가 많 지 않다.사용 특징 은 다음 과 같 습 니 다.
@Component
public Class AAA {
@Autowired
private BBB b;
public AAA() {
System.out.println(" b : b = " + b);
}
@PostConstruct
private void init() {
System.out.println(" b : b = " + b);
}
}
4、InitializingBeanInitializingBean 은 Spring 이 제공 하 는 인터페이스 로 하나의 방법 만 포함 합 니 다.after PropertiesSet().이 인터페이스의 클래스 를 실현 하면 해당 하 는 Bean 이 Spring 에 의 해 관리 되 고 필요 한 속성 이 모두 설정 되면 Spring 은 이 Bean 의 after PropertiesSet()을 호출 합 니 다.빈 이 실례 화 하 는 과정 에서 실행 순 서 는 Constructor>@PostConstruct>InitializingBean>init-method 입 니 다.
public class InitSequenceBean implements InitializingBean {
public InitSequenceBean() {
System.out.println("InitSequenceBean: constructor");
}
@PostConstruct
public void postConstruct() {
System.out.println("InitSequenceBean: postConstruct");
}
public void initMethod() {
System.out.println("InitSequenceBean: init-method");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("InitSequenceBean: afterPropertiesSet");
}
}
5、ApplicationListenerapplicationListener 는 spring 의 모니터 로 사건 을 감청 할 수 있 고 전형 적 인 관찰자 모델 입 니 다.용기 에 애플 리 케 이 션 Listener Bean 이 있 으 면 애플 리 케 이 션 Context 가 애플 리 케 이 션 이 벤트 를 발표 할 때마다 애플 리 케 이 션 Listener Bean 이 자동 으로 실 행 됩 니 다.이 이벤트 메커니즘 은 프로그램 이 표시 하 는 트리거 가 필요 합 니 다.그 중에서 spring 은 내 장 된 이벤트 가 있 습 니 다.어떤 작업 을 완성 할 때 어떤 이벤트 동작 을 보 냅 니 다.예 를 들 어 ContextRefreshedEvent 이 벤트 를 감청 할 때 모든 bean 이 초기 화 되 고 성공 적 으로 불 러 오 면 이 이 벤트 를 촉발 합 니 다.응용 프로그램 Listener 인 터 페 이 스 를 실현 하면 감청 동작 을 받 을 수 있 고 자신의 논 리 를 쓸 수 있 습 니 다.같은 사건 은 사용자 정의,감청 도 가능 하고 사용자 정의 도 가능 하 며 완전히 자신의 업무 논리 에 따라 처리 할 수 있다.그래서 자원 초기 화 로드 도 할 수 있 습 니 다!
@Component
public class DataSourceInitListener implements ApplicationListener<ContextRefreshedEvent> {//ContextRefreshedEvent
private static final Logger LOGGER = LoggerFactory.getLogger(DataSourceInitListener.class);
@Autowired
private SystemConfigService systemConfigService;
@Autowired
private ItemService itemService;
@Autowired
private SystemResultService systemResultService;
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
if(event.getApplicationContext().getParent() == null) {// ,
LOGGER.info(" systemConfig ");
systemConfigService.initConfig();
LOGGER.info(" ");
systemResultService.initResult();
LOGGER.info(" ...........");
}
}
}
여기 서 SpringBoot 자원 초기 화 로 딩 에 관 한 몇 가지 방법 에 관 한 글 을 소개 합 니 다.더 많은 SpringBoot 자원 초기 화 로 딩 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.