>  기사  >  Java  >  springboot 핫 배포의 두 가지 방법은 무엇입니까?

springboot 핫 배포의 두 가지 방법은 무엇입니까?

王林
王林앞으로
2023-06-03 11:51:27728검색

springboot와 springmvc의 차이점

spring boot에는 추가 배포 없이 직접 실행할 수 있는 tomcat, Jetty 및 Undertow 컨테이너가 포함되어 있습니다.

spring boot는 자동으로 구성되므로 XML 파일의 구성 수가 많이 줄어듭니다. 프로젝트 구성 복잡성

Spring MVC는 Servlet 기반의 MVC 프레임워크로 Spring의 구성이 매우 복잡하고 다양한 XML, JavaConfig, hin을 처리하기가 번거롭기 때문에 주로 WEB 개발 문제를 해결합니다. 따라서 개발자의 사용을 단순화하기 위해 Spring 구성 프로세스를 단순화하는 Convention이 구성보다 낫습니다.

Spring은 "엔진"입니다.

Spring MVC는 Spring을 기반으로 하는 MVC 프레임워크입니다.

Spring Boot는 Spring4의 조건부 등록을 기반으로 하는 신속한 개발 통합 패키지 세트입니다.

springboot 핫 배포의 두 가지 방법

SpringBoot devtools 핫 배포는 SpringBoot 1.3 이후에만 사용할 수 있습니다

①: spring-boot-devtools ②: Spring Loaded

방법 1:

프로젝트의 pom 파일에 종속성을 추가합니다.

 <!--热部署jar-->
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-devtools</artifactId>
 </dependency>

그런 다음: Shift+ctrl+alt+"/"(IDEA의 단축키)를 사용하여 "Registry"를 선택한 다음compiler.automake.allow.when.app.running

방법 2:

프로젝트에서 추가 다음 코드

 <build>
 <plugins>
  <plugin>
  <!-- springBoot编译插件-->
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <dependencies>
   <!-- spring热部署 -->
   <!-- 该依赖在此处下载不下来,可以放置在build标签外部下载完成后再粘贴进plugin中 -->
   <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>springloaded</artifactId>
   <version>1.2.6.RELEASE</version>
   </dependency>
  </dependencies>
  </plugin>
 </plugins>
 </build>

추가한 후 mvn 명령을 사용하여 실행해야 합니다.

먼저 IDEA에서 구성 편집을 찾은 후 다음을 수행합니다. (왼쪽 상단 모서리에 있는 "+"를 클릭한 다음 maven을 선택하면 오른쪽 패널이 빨간색으로 나타납니다. 밑줄 친 영역에 그림과 같이 명령을 입력합니다(여기서는 MvnSpringBootRun으로 이름 지정).

저장을 클릭하면 IDEA 프로젝트 실행 영역에 나타납니다.

springboot 구성 파일을 실행하려면 녹색 화살표를 클릭하세요.

spring boot는 전역 구성 파일을 사용합니다. 주로 다음 두 가지 유형

application.properties: 예: server.port=9998

application.yml (YAML): 예: server:

      port: 8080

구성 파일의 주요 기능은 spring boot의 기본 기본 구성을 수정하는 것입니다.

Spring Boot의 핵심 주석

시작 클래스에 대한 주석 이는 Spring Boot의 핵심 주석이기도 한 @SpringBootApplication입니다. 주요 조합에는 다음 3가지 주석이 포함됩니다.

@SpringBootConfiguration: @Configuration 주석을 결합하여 구성 파일의 기능을 구현합니다.

@EnableAutoConfiguration: 자동 구성 기능을 켜거나, 데이터 소스 자동 구성 기능을 끄는 등 특정 자동 구성 옵션을 끕니다: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }).

@ComponentScan: 스프링 컴포넌트 스캐닝.

스프링 부트 스타터의 실행 원리

스타터를 사용하여 자동화된 구성을 수행하려면 Maven 종속성 및 구성 파일이라는 두 가지 조건만 필요합니다. 다음은 스타터를 사용하여 자동화된 구성 프로세스에 대한 간략한 소개입니다.
maven을 소개하는 것은 기본적으로 jar 패키지를 가져오는 것입니다. spring-boot가 시작되면 spring.factories 파일의 구성에 따라 resources/META-INF/spring.factories 파일을 찾습니다. 자동으로 구성해야 하는 클래스

Spring Boot와 Spring MVC의 차이점

  1. Spring Boot는 Spring과 Spring MVC를 통합한 반면 Spring MVC는 경량 웹 레이어 프레임워크인 Spring의 모듈일 뿐입니다.

  2. Spring Boot는 거의 Zero 구성을 달성할 수 있으며 모든 기능은 주석을 사용하여 개발되고 '구성보다 관례'라는 아이디어를 사용하여 프로젝트 개발을 단순화합니다.

  3. 어려움, Spring MVC는 XML 구성에 의존해야 합니다. 개발

  4. Spring Boot에는 Tomcat이 내장되어 있습니다. jar 패키지로 패키징한 후 직접 실행할 수도 있고 외부 tomcat을 사용하도록 선택할 수도 있습니다.

  5. Spring Boot는 또한 다음과 같은 많은 타사 라이브러리 구성을 상속합니다. JDBC, Mongo, Redis 등 이러한 타사 라이브러리를 적용하면 거의 Zero 구성이 가능합니다

springcloud의 서비스 등록 및 검색 원리는 무엇입니까

Eureka에는 Eureka Server와 Eureka 두 가지 구성 요소가 있습니다. Client

Eureka Server는 서비스 등록 서비스를 제공합니다

각 노드가 시작된 후 EurekaServer에 등록되므로 EurekaServer의 서비스 레지스트리에는 사용 가능한 모든 서비스 노드의 정보가 저장될 수 있습니다. EurekaClient는 Eureka Server를 단순화하는 데 사용되는 Java 클라이언트이며, 클라이언트에는 라운드 로빈 로드 알고리즘을 사용하는 로드 밸런서도 내장되어 있습니다. 애플리케이션이 시작되면 하트비트가 Eureka Server로 전송됩니다(기본 기간은 30초). Eureka Server가 여러 하트비트 주기 내에 노드의 하트비트를 수신하지 못하는 경우 EurekaServer는 서비스 레지스트리에서 서비스 노드를 제거합니다(기본값 90초).


Eureka의 세 가지 주요 역할:

    Eureka Server는 서비스 등록 및 검색을 제공합니다.
  • 서비스 제공자 서비스 소비자가
  • 서비스 소비자를 찾을 수 있도록 서비스 공급자는 유레카에 서비스를 등록합니다. 서비스 소비자는 서비스를 소비할 수 있도록 유레카로부터 등록된 서비스 목록을 얻습니다.

서비스 등록 센터로서 유레카와 주키퍼의 장점:

유명한 CAP 이론에서는 분산 시스템이 C(일관성), A(가용성), P(파티션 내결함성)를 만족하는 것이 불가능하다고 지적합니다. ) 동시에. 분산 시스템에서는 파티션 내결함성 P가 보장되어야 하므로 A와 C 사이에서만 절충이 가능합니다.

그래서

  • Zookeeper는 CP를 보장합니다.

  • Eureka는 AP

mybatis에서 #과 $의 차이

#는 데이터에 큰따옴표를 추가하는 것과 같습니다. $는 데이터 직접 표시

  • 들어오는 데이터는 문자열로 처리되며 큰따옴표가 추가됩니다. 예를 들어 #user_id#순으로, 전달된 값이 111이면 sql로 구문 분석할 때 값은 "111"순으로 지정됩니다. 전달된 값이 id인 경우 구문 분석된 sql은 "id"순으로 지정됩니다.

  • $은 들어오는 데이터를 직접 표시하고 SQL에서 생성합니다. 예: order by $user_id$, 전달된 값이 111이면 sql로 구문 분석할 때 값은 user_id별로 정렬됩니다. 전달된 값이 id이면 구문 분석된 sql은

  • 메서드입니다. 3#은 SQL 주입을 크게 방지할 수 있습니다.

  • $ 방법으로는 SQL 삽입을 막을 수 없습니다.

  • $ 메서드는 일반적으로 테이블 이름과 같은 데이터베이스 개체를 전달하는 데 사용됩니다.

  • 일반적으로 #을 사용할 수 있으면 $.

사용 시 주의가 필요합니다. MyBatis를 정렬할 때 동적 매개변수로 정렬합니다.


를 #


대신 $로 바꾸세요. 기본적으로 #{} 형식 구문을 사용하면 MyBatis가 준비된 명령문 속성을 생성하고 이에 대해 안전한 값(예: ?)을 설정합니다. 그것. 이는 안전하고 빠르며 선호되는 방법입니다. 때로는 변경되지 않은 문자열을 SQL 문에 직접 삽입하고 싶을 때도 있습니다. 예를 들어 ORDER BY처럼 다음과 같이 사용할 수 있습니다:

ORDER BY ${columnName}

여기서 MyBatis는 문자열을 수정하거나 이스케이프하지 않습니다.

Redis가 데이터를 제거하는 방법

  1. 휘발성-lru: 만료 시간이 설정된 데이터 세트(server.db[i].expires)에서 가장 최근에 사용된 데이터를 선택하여 제거합니다.

  2. 휘발성- ttl : 만료시간이 설정된 데이터셋(server.db[i].expires) 중 만료될 데이터를 선택하여 제거

  3. 휘발성-random : 만료시간이 설정된 데이터셋(서버)을 선택 .db[i].expires) ) 제거할 데이터를 무작위로 선택

  4. allkeys-lru: 데이터 세트(server.db[i].dict)에서 가장 최근에 사용된 데이터를 선택하여

  5. allkeys-를 제거합니다. 무작위: 데이터 세트(server.db)에서 선택 [i].dict) 제거할 데이터를 무작위로 선택

  6. no-envivtion(제거): 데이터 제거 금지

LRU 메커니즘:

redis는 정기적으로 제거되는 lru 카운터 server.lrulock을 저장합니다. 업데이트(redis 타이머 프로그램 severCorn()), 각 redis 객체는 해당 lru 값을 설정하고 redis는 객체에 액세스할 때마다 redisObject.lru를 업데이트합니다.


LRU 제거 메커니즘: 데이터 세트에서 여러 키-값 쌍을 무작위로 선택하고 그 중 lru가 가장 큰 키-값 쌍을 제거하여 제거합니다. 따라서 redis는 제거된 데이터가 가장 최근에 사용된 데이터임을 보장하지 않고 무작위로 선택된 키-값 쌍임을 보장합니다.

TTL 메커니즘:

키-값 쌍 만료 일정은 redis 데이터 세트 구조, 즉 redisDb.expires에 저장됩니다.


TTL 제거 메커니즘: 데이터 세트에서 여러 키-값 쌍을 무작위로 선택하고 제거를 위해 만료 시간에 가장 가까운 키-값 쌍을 제거합니다. 따라서 Redis는 제거된 데이터가 만료 시간에 가장 가까운 것을 보장하지 않고 무작위로 선택된 키-값 쌍을 보장합니다.

Redis는 각 서비스 클라이언트가 명령을 실행할 때 사용된 메모리가 과도한지 여부를 감지합니다

위 내용은 springboot 핫 배포의 두 가지 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제