전통문화대전망 - 전통 미덕 - Spring MVC 의 일반적인 프레임워크는 무엇입니까?

Spring MVC 의 일반적인 프레임워크는 무엇입니까?

10 개의 공통 프레임:

첫째, SpringMVC

둘째, 봄

셋째, 내 배티스

넷째, 두보

동사 (verb 의 약어) 전문가

여섯째, RabbitMQ

일곱, Log4j

여덟, Ehcache

아홉. 레디스

X. 지로

확장된 읽기:

첫째, SpringMVC

Spring 웹 MVC 는 요청 중심의 웹 MVC 디자인 패턴을 구현하는 Java 기반의 경량 웹 프레임워크입니다. MVC 아키텍처 모델을 사용하여 웹 계층의 책임을 분리하더라도 요청 구동은 요청-응답 모델을 사용하는 것을 의미합니다. 프레임워크의 목적은 개발을 간소화하는 데 도움이 되며, Spring Web MVC 는 일상적인 웹 개발을 단순화하기 위한 것입니다.

이 모델은 응용 프로그램의 데이터와 일반적으로 형성되는 POJO 를 캡슐화합니다.

뷰는 모델 데이터 및 생성된 HTML 출력을 렌더링하며 클라이언트 브라우저에서 해석할 수 있습니다.

컨트롤러는 사용자의 요청을 처리하고, 적절한 모델을 설정하고, 뷰 렌더링에 전달할 책임이 있습니다.

Spring 의 웹 모델-뷰-컨트롤러 (MVC) 프레임워크는 모든 HTTP 요청 및 응답을 처리하는 Dispatcher 서블릿을 중심으로 설계되었습니다.

Spring 웹 MVC 에서 요청을 처리하는 프로세스입니다

구체적인 구현 단계는 다음과 같습니다.

1. 먼저 사용자가 요청->; 프런트 엔드 컨트롤러는 요청 정보 (예: URL) 에 따라 처리할 페이지 컨트롤러를 결정하고 이전 컨트롤러의 제어 논리 부분인 요청을 위임합니다. 그림 2- 1 의 단계 1 및 2;

2. 요청을 받은 후 페이지 컨트롤러는 기능 처리를 수행합니다. 먼저 요청 매개 변수를 수집하여 Spring Web MVC 에서 command 객체라고 하는 객체에 바인딩한 다음 이를 검증한 다음 command 객체를 비즈니스 객체에 위임하여 처리해야 합니다. 처리 후 ModelAndView (모델 데이터 및 논리적 뷰 이름) 를 반환합니다. 그림 2- 1 의 3, 4, 5 단계

3. 프런트 엔드 컨트롤러는 제어권을 회수한 다음 반환된 논리적 뷰 이름에 따라 적절한 뷰를 선택하여 렌더링하고 뷰 렌더링에 대한 모델 데이터를 전송합니다. 그림 2- 1 의 6 단계와 7 단계

4. 프런트엔드 디렉터는 그림 2- 1 8 단계와 같이 제어권을 다시 회수하고 응답을 사용자에게 반환합니다. 이것은 모든 일의 결말이다.

둘째, 봄

2. 1, IOC 컨테이너: blogs.com/linjiqin/archive/2013/1/

IOC 컨테이너는 종속 주입 기능이 있는 컨테이너입니다. IOC 컨테이너는 응용 프로그램에서 객체를 인스턴스화, 위치 지정, 구성 및 상호 종속성을 설정합니다. 응용 프로그램은 코드에 직접 새 관련 개체를 추가할 필요가 없습니다. 응용 프로그램은 IOC 컨테이너에 의해 조립됩니다. BeanFactory 는 봄 IOC 컨테이너의 실제 대표이다.

2.2, AOP:/more Evan/article/details/119771/kloc-

간단히 말해 업무와는 무관하지만 비즈니스 모듈에 의해 호출되는 논리 또는 책임을 캡슐화하여 시스템의 중복 코드를 줄이고 모듈 간의 커플링을 줄임으로써 향후 운영성과 서비스 용이성에 도움이 됩니다. AOP 는 수평 관계를 나타냅니다.

AOP 는 교차 절단 초점을 캡슐화하는 데 사용되며 다음 시나리오에 사용할 수 있습니다.

인증 권한?

캐시?

컨텍스트 전달 콘텐츠 전달?

오류 처리 오류 처리?

게으른 척?

디버깅?

기록, 추적, 분석 및 모니터링 기록 추적 최적화 교정?

성능 최적화 성능 최적화?

버텨?

리소스 풀?

동기화 동기화?

거래

셋째, 내 배티스

MyBatis 는 일반 SQL 쿼리, 저장 프로시저 및 고급 매핑을 지원하는 우수한 지속성 프레임워크입니다. MyBatis 는 JDBC 코드와 매개 변수를 수동으로 설정하고 결과 세트를 검색하는 거의 모든 작업을 제거합니다. MyBatis 는 간단한 XML 또는 주석을 사용하여 구성 및 원시 매핑을 수행하고 인터페이스와 Java POJOs (일반 레거시 Java 객체) 를 데이터베이스의 레코드에 매핑합니다.

전체 프로세스:

(1) 구성 로드 및 초기화?

트리거 조건: 구성 파일 로드?

수신 매개변수 매핑 구성, 실행된 SQL 문 및 결과 매핑 구성을 포함한 SQL 구성 정보를 MappedStatement 객체에 로드하여 메모리에 저장합니다.

(2) 통화 요청 수신?

트리거 조건: Mybatis 에서 제공하는 API 호출?

수신 매개변수: SQL 및 수신 매개변수 객체의 ID?

처리: 처리를 위해 요청을 하위 요청 처리 레벨로 전달합니다.

(3) 작업 요청 처리를 위한 트리거 조건: API 인터페이스 계층 전송 요청?

수신 매개변수: SQL 의 ID 및 수신 매개변수 객체입니다.

프로세스:

(a) SQL 의 ID 를 기준으로 해당 MappedStatement 객체를 찾습니다.

(b) 수신 매개변수 오브젝트를 기준으로 MappedStatement 오브젝트를 구문 분석하여 최종 실행할 SQL 을 얻고 수신 매개변수를 실행합니다.

(c) 데이터베이스 연결을 가져오고, 얻은 최종 SQL 문과 입력 매개 변수에 따라 데이터베이스를 실행하고, 실행 결과를 얻습니다.

(d) MappedStatement 객체의 결과 매핑 구성에 따라 결과 실행 결과를 변환하여 최종 처리 결과를 얻습니다.

(e) 연결 자원을 해제하십시오.

(4) 처리 결과를 반환하고 최종 처리 결과를 반환합니다.

MyBatis 의 가장 강력한 기능 중 하나는 동적 문 기능입니다. JDBC 나 이와 유사한 프레임워크를 사용해 본 적이 있다면 SQL 문 조건을 연결하는 것이 얼마나 고통스러운지 알 수 있을 것이다. 공백을 잊지 말고 열 뒤의 쉼표를 생략하십시오. 동적 보고서는 이러한 문제점을 완전히 해결합니다.

넷째, 두보

Dubbo 는 고성능의 투명한 RPC (원격 프로시저 호출 프로토콜) 원격 서비스 호출 및 SOA 서비스 거버넌스 체계를 제공하는 분산 서비스 프레임워크입니다. 간단히 말해서, dubbo 는 서비스 프레임워크이다. 분산된 수요가 없다면, 사실 필요하지 않다. 분산할 때만 dubbo 와 같은 분산 서비스 프레임워크의 수요가 있습니다. 본질적으로 서비스 호출입니다. 분명히 원격 서비스 호출을위한 분산 프레임 워크입니다.

1, 투명한 원격 메서드 호출은 로컬 메서드를 호출하는 것처럼 간단한 구성만 필요하고 API 침입은 없습니다.

2. 소프트 로드 밸런싱 및 내결함성 메커니즘은 인트라넷에서 F5 와 같은 하드웨어 로드 밸런서를 대체하여 비용과 단일 지점을 줄일 수 있습니다.

3. 서비스는 자동으로 등록 및 검색되므로 더 이상 서비스 공급업체의 주소를 기록할 필요가 없습니다. 등록 센터는 인터페이스 이름을 기준으로 서비스 공급업체의 IP 주소를 조회하므로 서비스 공급업체를 부드럽게 추가하거나 제거할 수 있습니다.

노드 역할 설명:?

제공자: 공개 서비스의 서비스 제공자입니다. -응?

소비자: 원격 서비스를 호출하는 서비스 소비자. -응?

레지스트리: 서비스 등록 및 검색 레지스트리 -응?

모니터: 서비스에 대한 호출 수 및 호출 수를 집계하는 모니터링 센터입니다. -응?

컨테이너: 서비스 실행 컨테이너.

동사 (verb 의 약어) 전문가

Maven 은 프로젝트 관리 및 구축을 위한 자동화 도구이며, 점점 더 많은 개발자가 프로젝트의 jar 패키지를 관리하는 데 사용하고 있습니다. 하지만 우리 프로그래머에게 가장 큰 관심사는 프로젝트 구성 기능이다.

여섯째, RabbitMQ

일반적으로 메시지 대기열은 즉시 반환할 필요가 없는 프로젝트에서 시간이 많이 걸리는 작업을 추출하여 비동기 처리를 수행함으로써 서버의 요청 응답 시간을 크게 줄여 시스템 처리량을 높입니다.

RabbitMQ 는 Erlang 이 구현한 고도의 동시성과 신뢰할 수 있는 AMQP 메시지 대기열 서버입니다.

Erlang 은 동적 함수 프로그래밍 언어입니다. Erlang 에 해당하는 각 Actor 는 메시징을 통해 통신하는 Erlang 프로세스에 해당합니다. * * * 공유 메모리에 비해 프로세스 간 메시징을 통한 통신의 직접적인 이점은 직접 잠금 오버헤드 (Erlang 가상 시스템의 기본 구현에서 잠금 응용 프로그램과 관계 없음) 를 제거한다는 것입니다.

AMQP (고급 메시지 대기열 프로토콜) 는 메시지 시스템 사양을 정의합니다. 이 사양은 분산 시스템의 하위 시스템이 메시지를 통해 상호 작용하는 방법을 설명합니다.

일곱, Log4j

로깅의 우선 순위는 해제, 치명적, 오류, 경고, 정보, 디버그, 모두 또는 사용자가 정의한 레벨로 나뉩니다.

여덟, Ehcache

EhCache 는 Hibernate 의 기본 캐시 공급자인 Java 전용 프로세스 내 캐시 프레임워크입니다. Ehcache 는 널리 사용되는 오픈 소스 Java 분산 캐시입니다. 주로 범용 캐시, Java EE 및 경량 컨테이너를 대상으로 합니다. 메모리 및 디스크 스토리지, 캐시 로더, 캐시 확장, 캐시 예외 처리기, gzip 캐시 서블릿 필터, REST 및 SOAP API 지원 등의 기능을 갖추고 있습니다.

장점:?

1, 빨리?

2. 간단해요?

3. 다양한 캐싱 정책?

4. 캐시된 데이터에는 메모리 및 디스크의 두 가지 수준이 있습니다. 용량에 대해 걱정하지 마십시오.

5. 가상 시스템 재부팅 시 캐시된 데이터가 디스크에 기록됩니까?

6. RMI, 플러그 가능 API 등을 통해 분산 캐싱을 수행할 수 있습니까?

7. 캐시 및 캐시 관리자가있는 수신 인터페이스?

8. 여러 캐시 관리자 인스턴스와 한 인스턴스에 대해 여러 캐시 영역을 지원합니까?

9. Hibernate 에 대한 캐시 구현을 제공합니다.

단점:?

1, 디스크 캐시를 사용할 때 많은 디스크 공간을 사용합니다. 디스크 캐시의 알고리즘이 간단하여 캐시의 효율성이 높아지기 때문입니다. 요소에 스토리지를 직접 추가할 뿐입니다. 그래서 원소에 대한 검색 속도가 매우 빠르다. 디스크 캐시를 사용하면 빈번한 애플리케이션에서 디스크가 곧 가득 차게 됩니다.

2. 데이터 보안은 보장할 수 없습니다. Java 가 갑자기 살해되어 충돌이 발생할 수 있습니다. EhCache 의 해결 방법은 파일이 충돌할 때 캐시를 다시 만드는 것입니다. 캐시된 데이터를 저장해야 하는 경우 바람직하지 않을 수 있습니다. 물론 캐시는 단순한 가속일 뿐 데이터 보안을 보장하지는 않습니다. 데이터 저장소의 보안을 유지하려면 Bekeley DB Java Edition 버전을 사용할 수 있습니다. 이것은 임베디드 데이터베이스입니다. 스토리지 보안 및 공간 활용도를 보장합니다.

아홉. 레디스

Redis 는 키 스토리지 시스템입니다. Memcached 와 마찬가지로 string, list, set, zset (순서 세트-순서 세트), hash (해시 유형) 등 더 많은 유형의 저장 값을 지원합니다 이러한 데이터 유형은 모두 push/pop, add/remove, union 및 difference 컬렉션의 교차와 보다 풍부한 작업을 지원하며 모두 원자적입니다. 이를 바탕으로 redis 는 여러 가지 정렬 방법을 지원합니다. Memcached 와 마찬가지로 데이터는 메모리에 캐시되어 효율성을 보장합니다. 반면 redis 는 정기적으로 업데이트된 데이터를 디스크에 쓰거나 추가 로그 파일을 수정하여 마스터-슬레이브 동기화를 수행합니다.

Redis 데이터베이스는 완전히 메모리에 있으며 디스크는 지속성에만 사용됩니다. Redis 는 많은 키 데이터 저장소보다 다양한 데이터 유형을 가지고 있습니다. Redis 는 원하는 수의 보조 서버에 데이터를 복제할 수 있습니다.

1.2, Redis 이점:

(1) 매우 빠름: Redis 는 매우 빨라서 초당 약 1 10000 그룹, 초당 약 8 1000+ 바를 실행할 수 있습니다

(2) 풍부한 데이터 유형 지원: Redis 는 목록, 컬렉션, 순서 세트, 해시 등 대부분의 개발자가 이미 알고 있는 데이터 유형을 지원합니다. 이를 통해 데이터 유형에서 더 잘 처리할 수 있는 문제를 파악할 수 있으므로 다양한 문제를 쉽게 해결할 수 있습니다.

(3) 모든 작업은 원자적입니다. 모든 Redis 작업은 원자적입니다. 즉, 두 클라이언트가 Redis 서버에 동시에 액세스할 경우 업데이트된 값을 얻을 수 있습니다.

(4) 다기능 유틸리티: Redis 는 캐시, 메시지, 대기열 (Redis 기본 지원 게시/가입), 짧은 수명의 데이터, 응용 프로그램 (예: 웹 응용 프로그램 세션, 웹 클릭 수 등) 과 같은 다양한 응용 프로그램에 사용할 수 있는 다기능 도구입니다.

1.3, Redis 단점:?

(1) 단일 스레드?

(2) 메모리 소비

X. 지로

아파치 헤로는 인증과 권한 부여를 단순화하기 위한 Java 의 보안 프레임워크입니다. Shiro 는 JavaSE 및 JavaEE 프로젝트에서 사용할 수 있습니다. 인증, 권한 부여, 엔터프라이즈 세션 관리 및 암호화를 처리하는 데 주로 사용됩니다. Shiro 의 구체적인 기능은 다음과 같습니다.

(1) 인증/로그인, 사용자가 적절한 id 를 가지고 있는지 확인

(2) 권한 부여, 즉 권한 검증, 인증된 사용자에게 특정 권한이 있는지 확인 즉, 사용자가 역할을 가지고 있는지 확인하는 것과 같이 사용자가 어떤 일을 할 수 있는지 여부를 판단하는 것입니다. 사용자가 자원에 대해 어떤 권리를 가지고 있는지 여부에 대한 세밀한 검증을 할 수 있습니다.

(3) 세션 관리, 즉 사용자가 로그인한 후 한 세션에 있으며 종료하기 전에 모든 정보가 해당 세션에 있습니다. 세션은 일반 JavaSE 환경이나 웹 환경에 있을 수 있습니다.

(4) 암호 암호화가 일반 텍스트 저장이 아닌 데이터베이스에 저장되는 등 데이터를 보호하는 암호화

(5) 웹 지원, 웹 환경에 쉽게 통합할 수 있습니다. -응?

캐시: 캐시 (예: 로그인 후 사용자 정보 및 역할/권한) 는 매번 검사할 필요 없이 효율성을 높일 수 있습니다.

(6)shiro 는 멀티스레드 어플리케이션의 동시 검증을 지원합니다. 즉, 한 스레드에서 다른 스레드가 시작되면 권한이 자동으로 전파됩니다.

(7) 테스트 지원 제공

(8) 한 사용자가 다른 사용자로 방문하는 척 할 수 있도록 허용 (허용된 경우);

(9) 나를 기억해라. 이것은 매우 흔한 기능이다. 한 번 로그인하면 다음에 로그인할 필요가 없다는 것이다.