Spring-boot 원리 및 spring-boot-starter 인 스 턴 스 와 코드
Spring-boot 는 등장 이후 지금까지 잘 나 가 고 있 습 니 다.다 들 쓰 고 있 는 것 같 습 니 다.채용 에서 도 이 걸 요구 하고 있 습 니 다.그러나 솔직히 spring-boot 는 플러그 인 가능 한 프로 그래 밍 방식 을 실현 하고 싶 을 뿐 설정 을 간소화 하 는 것 이 라 고 할 수 있 습 니 다.사실은 별로 줄 이지 않 았 습 니 다.코드 에 설정 을 넣 고 각종 annotation 을 통 해 표 시 했 습 니 다.
개인 적 으로 팀 이 spring-boot 라 는 겹겹이 포장 하 는 방식 을 별로 원 하지 않 습 니 다.각종 jar 가 천 지 를 뒤 덮 었 습 니 다.결국 모두 가 납치 되 었 습 니 다.자신의 밑바닥 능력 이 반드시 향상 되 는 것 은 아 닙 니 다.
spring-boot 의 starter 는 또 무슨 귀신 입 니까?
한 마디 로 spring-boot 의 starter 는 maven 을 통 해 자체 포함 을 완성 하고 annotation 설정 을 통 해 spring 컨 텍스트 에서 발견 되 고 예화 할 수 있 는 플러그 인 구성 요소 나 서비스 입 니 다.
spring-boot 는 두 가지 starter 가 있 습 니 다.
하 나 는 내부 에서 이미 지지 한 것 이 고,하 나 는 제3자 의 것 이다.
내부 지원 starter:
이 는@conditionalOnClass 를 통 해 예화 여 부 를 결정 합 니 다.(conditionalOnClass 는 classpath 에서 필요 한 의존 클래스 를 발견 할 때 예화)이 서 비 스 를 시작 하려 면 해당 하 는 starter 를 설정 하려 면 이 starter 는 필요 한 jar 를 연결 할 수 있 습 니 다.
우리 가 log 에 대한 사용 과 비슷 합 니 다.기본적으로 slf4j 라 는 api 인 터 페 이 스 를 사용 하여 갈 고 리 를 제공 합 니 다.classpath 에서 누가 이 기 구 를 실 현 했 는 지 이 갈고리 에 걸 면 log 가 구체 적 으로 실 현 됩 니 다.그 중에서 log4j 는 하나의 실현 입 니 다.
spring 의 다음 maven 설정 을 통 해 dependency Management(이 때 maven 의 의존 관리,사용 하지 않 을 때 불 러 오지 않 음)를 통 해 모든 내 장 된 starter 를 설정 한 것 을 볼 수 있 습 니 다.사용 할 때 대응 하 는 starter 를 설정 에 의존 하면 됩 니 다.
<dependency>
jpg <groupId>org.springframework.boot</groupId>
jpg <artifactId>spring-boot-starter</artifactId> <
jpg/dependency>
모든 starter 는 코드 설정 을 통 해 컨 텍스트 에 발 견 됩 니 다.spring-boot-autoconfigure-xxx.jar
에서 볼 수 있 습 니 다.다음 과 같 습 니 다.내 장 된 tomcat,jetty 도 안에 있 습 니 다.
구체 적 인 코드:
ConditionalOnClass
을 통 해 tomcat 같은 종 류 를 발견 하면 tomcat 서 비 스 를 시작 합 니 다.제3자 starter:
예 를 들 어 my batis 등.
원 리 는 똑 같 습 니 다.이미 실 현 된 서비스 코드 위 에 설정 코드 를 밀봉 하면 됩 니 다.my bitis 를 보 세 요.이것 은 my batis-spring-boot-starter 의 의존 입 니 다.
<dependency>
jpg<groupId>org.mybatis.spring.boot</groupId>
jpg<artifactId>mybatis-spring-boot-starter</artifactId>
jpg<version>1.3.0</version>
jpg</dependency>
이 의존 은 pom 입 니 다.누 르 면 포 함 된 의존 관 계 를 볼 수 있 습 니 다.그 중 하 나 는 my batis 의 autoConfigure 입 니 다.@bean 등 annotation 을 통 해 my batis 에 대한 실례 화 설정 을 완성 합 니 다.다음 과 같 습 니 다.구체 적 인 코드:
이 메커니즘 에 기초 하여 우리 자신 도 하 나 를 실현 할 수 있다.
이번 에는 my batis 와 유사 한 간단 한 데이터베이스 조작 구성 요 소 를 실현 하 였 으 며,간단 한 조회 서비스 만 실현 하 였 을 뿐이다.
전체 예시 에는 두 개의 공사 가 있다.
우리 자신 을 실현 하 는 starter(spring-boot-my dao-starter 라 고 이름 붙 임)는 마지막 으로 AR 가방 을 만 들 고 로 컬 maven 로 컬 공장 창고 에 설치 합 니 다.
다른 프로젝트 는 테스트 에 사 용 됩 니 다.최종 적 으로 spring-boot-my dao-starter 전체 구성 요소 에 의존 하고 안의 조회 서 비 스 를 호출 하여 테스트 합 니 다.
공사
구체 적 인 유형 은 다음 과 같다.
1.spring-boot-my dao-starter 프로젝트 를 만 들 고 의존 설정 을 추가 합 니 다.
우리 가 실현 하 는 이 구성 요 소 는 my sql 의 구동 과 spring-boot 의 컨 텍스트 환경 에 만 의존 합 니 다.그 중에서 my sql 구동 용 spring-boot-starter-parent 에 설 치 된 것 은 여기 서 직접 사용 하면 됩 니 다.maven 설정 은 다음 과 같 습 니 다.
2.다음 과 같은 몇 가지 유형 을 실현 한다.
Mydao:데이터 베 이 스 를 봉인 하 는 연결 과 조회 서 비 스 는 spring 과 아무런 관계 가 없습니다.
MyDao AutoConfiguration:MyDao 설정 을 시작 할 때 spring 컨 텍스트 에 발견 되 고 해석 할 수 있 도록 제공 합 니 다.
DbProperties:데이터베이스 설정 매개 변수 파일 읽 기 완료(db.properties,물론 spring-boot 도 다른 형식의 설정 파일 을 지원 합 니 다.개인 은 전통 스타일 을 좋아 합 니 다).
그 중 Mydao:
MyDao AutoConfiguration(Mydao 에 설정 매개 변수 대상 을 전송 하고 Mydao 인 스 턴 스 를 설정 합 니 다):
Spring 은 시작 할 때@Bean 을 통 해 Mydao 를 실례 화하 여 ConfigurableApplication Context 용기 에 넣 습 니 다.
파일 클래스 DbProperties 설정:
classpath 의 db.properties 설정 파일 을 자동 으로 읽 고 클래스 대상 으로 예화 합 니 다.설정 파일 은 테스트 프로젝트(test-spring-boot-mydao-starter)에서 제공 해 야 합 니 다.
설정 파일 db.properties
이상 은 진짜 스타 터 의 모습 이 었 습 니 다.이 starter 를 어떻게 사용 하 는 지 설명 합 니 다.
새 테스트 프로젝트
test-spring-boot-mydao-starter
.우리 starter 에 대한 의존 도 설정:starter 에 서 는 spring-boot 의 컨 텍스트 에 의존 하고 있 기 때문에 설정 할 필요 가 없습니다.
그리고 테스트:
우 리 는 my sql 자체 데이터베이스 에 있 는 user 표 로 테스트 를 한다.다음은 테스트 클래스 입 니 다.starter 에 my dao 를 주입 해 야 합 니 다.
그리고 테스트 시작:
스프링 의 준 it 로 테스트 할 수도 있 습 니 다.
총결산
이상 은 소 편 이 소개 한 Spring-boot 원리 와 spring-boot-starter 인 스 턴 스 와 코드 입 니 다.도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.