전통문화대전망 - 전통 미덕 - Java 프레임워크에서 일반적으로 사용되는 프레임워크는 무엇입니까?
Java 프레임워크에서 일반적으로 사용되는 프레임워크는 무엇입니까?
일반적으로 사용되는 상위 10개 프레임워크:
1. SpringMVC
2. Spring
3. 4. 더보
5. 메이븐
6. RabbitMQ
7. Ehcache
>9, Redis10. Shiro
확장 내용:
1. SpringMVC
Spring Web MVC는 Java 기반 구현입니다. 웹 MVC 디자인 패턴의 요청 중심 경량 웹 프레임워크는 MVC 아키텍처 패턴의 아이디어를 사용하여 웹 계층의 책임을 분리하는 것을 의미합니다. 요청-응답 모델을 사용하는 것입니다. 개발을 단순화하기 위해 Spring Web MVC는 일상적인 웹 개발도 단순화하는 것을 목표로 합니다.
모델은 애플리케이션의 데이터와 일반적으로 형성되는 POJO를 캡슐화합니다.
뷰는 모델 데이터와 일반적으로 뷰가 생성하는 HTML 출력(클라이언트 브라우저가 해석할 수 있음)을 표시하는 역할을 담당합니다.
컨트롤러(Controller)는 사용자의 요청을 처리하고, 적절한 모델을 설정하고, 렌더링을 위해 뷰에 전달하는 역할을 담당합니다.
Spring의 웹 MVC(Model-View-Controller) 프레임워크는 모든 HTTP 요청과 응답을 처리하는 DispatcherServlet을 중심으로 설계되었습니다.
Spring Web MVC 요청 처리 과정
구체적인 실행 단계는 다음과 같습니다.
1. 먼저 사용자가 요청을 보냅니다————>앞 -엔드 컨트롤러, 프론트 엔드 제어 서버는 요청 정보(예: URL)를 기반으로 처리를 위해 선택할 페이지 컨트롤러를 결정하고 해당 요청을 해당 컨트롤러에 위임합니다. 즉, 이전 컨트롤러의 제어 로직 부분인 1단계와 2. 페이지 컨트롤러는 요청을 수신한 후 먼저 요청 매개변수를 수집하고 개체에 바인딩해야 합니다. Spring Web MVC에서 이를 확인한 후 명령 객체를 위임합니다. 비즈니스 객체가 처리되면 그림 2-1의 3, 4, 5단계인 ModelAndView가 반환됩니다.
3. 프런트엔드 컨트롤러가 제어권을 되찾은 다음 반환된 논리적 뷰 이름에 따라 렌더링할 해당 뷰를 선택하고 뷰 렌더링을 위한 모델 데이터를 전달합니다. 그림 2-1에서
4. 프런트 엔드 컨트롤러가 다시 제어권을 가져옵니다. 오른쪽, 사용자에게 응답을 반환합니다. 그림 2-1의 8단계는 전체 프로세스의 끝입니다.
2. Spring
2.1, IOC 컨테이너: blogs.com/linjiqin/archive/2013/11/04/3407126.html
IOC 컨테이너에는 A가 있습니다. 종속성 주입 기능이 있는 컨테이너인 IOC 컨테이너는 애플리케이션에서 개체를 인스턴스화하고, 찾고, 구성하고, 이러한 개체 간의 종속성을 설정하는 일을 담당합니다. 애플리케이션은 코드에서 직접 새로운 관련 개체를 필요로 하지 않으며 애플리케이션은 IOC 컨테이너에 의해 어셈블됩니다. Spring에서 BeanFactory는 IOC 컨테이너의 실제 대표자입니다.
2.2.AOP:/moreevan/article/details/11977115
간단히 말하면 비즈니스와 관련이 없지만 호출되는 논리 또는 논리를 결합하는 것입니다. 비즈니스 모듈에서는 시스템의 중복 코드를 줄이고, 모듈 간의 결합을 줄이고, 향후 운용성과 유지 관리성을 용이하게 하기 위해 책임이 캡슐화됩니다.
AOP는 수평적 관계를 나타냅니다.
AOP는 크로스커팅 문제를 캡슐화하는 데 사용되며 다음 시나리오에서 사용할 수 있습니다:
인증 권한?
캐싱?
컨텍스트 전달?
오류 처리?
지연 로딩?
디버깅?
로깅, 추적, 프로파일링 그리고 모니터링?
성능 최적화?
지속성?
리소스 풀링 리소스 풀?
동기화 동기화?
트랜잭션
3. Mybatis
MyBatis는 매핑을 위한 일반 SQL 쿼리, 저장 프로시저 및 고급 Excellent 지속성 레이어 프레임워크를 지원합니다. MyBatis는 거의 모든 JDBC 코드와 매개변수 수동 설정 및 결과 세트 검색을 제거합니다. MyBatis는 데이터베이스의 레코드에 대한 구성 및 원본 매핑, 인터페이스 및 Java POJO(Plain Old Java Objects, 일반 Java 개체) 매핑을 위해 간단한 XML 또는 주석을 사용합니다.
전체 프로세스:
(1) 구성을 로드하고 초기화하시겠습니까?
트리거 조건: 구성 파일을 로드하시겠습니까?
SQL 구성 정보는 MappedStatement 개체(수신 매개 변수 매핑 구성, 실행된 SQL 문 및 결과 매핑 구성 포함)에 로드되어 메모리에 저장됩니다.
(2) 호출 요청을 받나요?
트리거 조건: 마이바티스에서 제공하는 API를 호출합니까?
수신 매개변수: SQL ID 및 수신 매개변수 객체 ?
처리 프로세스: 처리를 위해 요청을 하위 요청 처리 계층으로 전달합니다.
(3) 처리 작업 요청 트리거 조건: API 인터페이스 레이어가 요청을 통과합니까?
수신 매개변수: SQL ID 및 수신 매개변수 개체
처리 프로세스:
(A) SQL ID에 따라 해당 MappedStatement 개체를 찾습니다.
(B) 들어오는 매개변수 개체에 따라 MappedStatement 개체를 구문 분석하여 실행할 최종 SQL과 실행 들어오는 매개변수를 얻습니다.
(C) 데이터베이스 연결을 획득하고, 최종 SQL 문과 실행 매개변수를 데이터베이스에 전달하여 실행하고, 실행 결과를 얻는다.
(D) MappedStatement 객체의 결과 매핑 구성에 따라 얻은 실행 결과를 변환하여 최종 처리 결과를 얻습니다.
(E) 연결 자원을 해제합니다.
(4) 처리 결과를 반환하고 최종 처리 결과를 반환합니다.
MyBatis의 가장 강력한 기능 중 하나는 동적 명령문 기능입니다. 이전에 JDBC 또는 유사한 프레임워크를 사용한 경험이 있다면 SQL 문 조건을 함께 결합하고 공백을 잊지 않거나 열 뒤의 쉼표를 생략하지 않는 등의 작업이 얼마나 힘든지 알 것입니다. 동적 문은 이러한 문제를 완전히 해결할 수 있습니다.
4. Dubbo
Dubbo는 고성능의 투명한 RPC(Remote Procedure Call Protocol) 원격 서비스 호출 솔루션과 SOA 서비스 거버넌스 계획을 제공하는 데 전념하는 분산 서비스 프레임워크입니다. . 간단히 말하면, dubbo는 배포할 필요가 없으면 실제로 사용할 필요가 없는 서비스 프레임워크이며, 배포할 때만 dubbo와 같은 분산 서비스 프레임워크가 필요하며, 본질적으로 그렇습니다. 간단히 말해서 Dongdong은 원격 서비스 호출을 위한 분산 프레임워크입니다.
1. 로컬 메소드 호출과 마찬가지로 투명한 원격 메소드 호출에는 API 침입 없이 간단한 구성이 필요합니다.
2. 소프트 로드 밸런싱 및 내결함성 메커니즘은 인트라넷의 F5와 같은 하드웨어 로드 밸런서를 대체하여 비용과 단일 지점을 줄일 수 있습니다.
3. 자동 서비스 등록 및 검색으로 더 이상 서비스 제공업체 주소를 하드 코딩할 필요가 없습니다. 등록 센터는 인터페이스 이름을 기반으로 서비스 제공업체의 IP 주소를 쿼리하고 원활하게 추가하거나 삭제할 수 있습니다. 서비스 제공자.
노드 역할 설명:?
공급자: 서비스를 노출하는 서비스 공급자입니다. ?
소비자: 원격 서비스를 호출하는 서비스 소비자입니다. ?
레지스트리: 서비스 등록 및 검색을 위한 등록 센터입니다. ?
모니터: 서비스 통화시간, 통화시간을 집계하는 모니터링 센터입니다. ?
컨테이너: 서비스가 컨테이너를 실행합니다.
5. Maven
Maven은 프로젝트 관리 및 빌드 자동화 도구로, 프로젝트의 jar 패키지를 관리하는 데 사용됩니다. 하지만 우리 프로그래머들에게 가장 중요한 것은 프로젝트 구축 기능입니다.
6. RabbitMQ
메시지 큐는 일반적으로 프로젝트에서 즉각적인 반환이 필요하지 않은 일부 시간이 소요되는 작업을 추출하여 비동기 처리를 수행합니다. 이 비동기 처리 방법은 서버의 요청을 크게 절약합니다. 응답 시간이 늘어나 시스템 처리량이 향상됩니다.
RabbitMQ는 Erlang으로 구현된 동시성 및 안정성이 뛰어난 AMQP 메시지 대기열 서버입니다.
Erlang은 동적으로 유형이 지정되는 함수형 프로그래밍 언어입니다. Erlang에 해당하는 각 Actor는 Erlang 프로세스에 해당하며, 프로세스는 메시지 전달을 통해 통신합니다. 공유 메모리와 비교할 때, 메시지 전달을 통한 프로세스 간 통신의 직접적인 이점은 직접 잠금 오버헤드가 제거된다는 것입니다(Erlang 가상 머신의 기본 구현에서 잠금 애플리케이션에 관계없이).
AMQP(Advanced Message Queue Protocol)는 메시지 시스템 사양을 정의합니다. 이 사양에서는 분산 시스템의 하위 시스템이 메시지를 통해 상호 작용하는 방법을 설명합니다.
7. Log4j
로깅 우선순위는 OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL 또는 사용자가 정의하는 수준으로 구분됩니다.
8. Ehcache
EhCache는 빠르고 유능한 순수 Java 프로세스 내 캐싱 프레임워크입니다. Ehcache는 널리 사용되는 오픈 소스 Java 분산 캐시입니다. 주로 일반 캐시, Java EE 및 경량 컨테이너용입니다. 메모리 및 디스크 저장소, 캐시 로더, 캐시 확장, 캐시 예외 처리기, gzip 캐시 서블릿 필터, REST 및 SOAP API 지원 등을 제공합니다.
장점:?
1. 빠르다?
2. 간단하다?
3. 다양한 캐싱 전략?
4. 캐시된 데이터에는 메모리와 디스크의 두 가지 수준이 있으므로 용량 문제를 걱정할 필요가 없나요?
5. 캐시된 데이터는 다시 시작하는 동안 디스크에 기록됩니다. 가상 머신인가요?
6. RMI, 플러그형 API 등을 통해 분산 캐싱을 수행할 수 있나요?
7. 캐시 및 캐시 관리자를 위한 수신 인터페이스가 있나요?
8. 다중 캐시 관리 서버 인스턴스를 지원하고 하나의 인스턴스에 대해 여러 캐시 영역을 지원합니까?
9. Hibernate 캐시 구현 제공
단점:?
1. 디스크 캐시를 사용할 경우 디스크 공간을 많이 차지합니다. 이는 DiskCache의 알고리즘이 단순하고, 알고리즘의 단순성으로 인해 캐시도 매우 효율적이기 때문입니다. 요소를 직접 추가합니다. 따라서 요소 검색이 매우 빠릅니다. 매우 자주 사용되는 응용 프로그램에서 DiskCache를 사용하면 디스크가 곧 가득 차게 됩니다.
2. 데이터 보안은 보장할 수 없습니다. Java가 갑자기 종료되면 충돌이 발생할 수 있습니다. EhCache의 해결책은 파일 충돌이 있는 경우 캐시를 다시 빌드하는 것입니다. 이는 캐시 데이터를 저장해야 하는 경우 불리할 수 있습니다. 물론 캐시는 속도를 높일 뿐 데이터 보안을 보장할 수는 없습니다. 데이터 저장 보안을 보장하려면 Bekeley DB Java Edition을 사용할 수 있습니다. 이것은 내장된 데이터베이스입니다. 스토리지 보안과 공간 활용도를 보장할 수 있습니다.
9. Redis
Redis는 키-값 저장 시스템입니다. Memcached와 유사하게 string(문자열), list(연결 목록), set(집합), zset(sorted set – ordered set) 및 hash(해시 유형)를 포함하여 상대적으로 더 많은 저장 값 유형을 지원합니다. 이러한 데이터 유형은 모두 푸시/팝, 추가/제거, 교차, 결합, 차이 및 다양한 작업을 지원하며 이러한 작업은 모두 원자적입니다. 이를 기반으로 redis는 다양한 정렬 방법을 지원합니다. memcached와 마찬가지로 데이터는 효율성을 보장하기 위해 메모리에 캐시됩니다. 차이점은 redis는 주기적으로 업데이트된 데이터를 디스크에 쓰거나 수정 작업을 추가 기록 파일에 쓰며, 이를 기반으로 마스터-슬레이브(master-slave) 동기화가 이루어진다는 점입니다.
Redis 데이터베이스는 전적으로 메모리에 있으며 지속성을 위해서만 디스크를 사용합니다. 많은 키-값 데이터 저장소에 비해 Redis는 더 풍부한 데이터 유형 세트를 가지고 있습니다. Redis는 원하는 수의 슬레이브 서버에 데이터를 복제할 수 있습니다.
1.2. Redis의 장점:
(1) 매우 빠릅니다: Redis는 매우 빠르며 초당 약 110,000개 세트와 초당 약 81,000개 이상의 레코드를 실행할 수 있습니다.
(2) 풍부한 데이터 유형 지원: Redis는 목록, 세트, 순서가 지정된 세트, 해시 등 대부분의 개발자가 이미 알고 있는 대부분의 데이터 유형을 지원합니다. 이를 통해 데이터 유형에 따라 어떤 문제를 더 잘 처리할 수 있는지 알 수 있으므로 다양한 문제를 매우 쉽게 해결할 수 있습니다.
(3) 작업은 원자적입니다. 모든 Redis 작업은 원자적이므로 두 클라이언트가 동시에 Redis 서버에 액세스하면 업데이트된 값을 얻게 됩니다.
(4) 다기능 유틸리티 도구: Redis는 캐싱, 메시징, 큐(Redis는 기본적으로 게시/구독 지원), 모든 단기 애플리케이션과 같은 여러 애플리케이션에서 사용할 수 있는 다기능 도구입니다. 웹 애플리케이션 세션, 웹 페이지 조회수 등과 같은 데이터 및 애플리케이션 프로그램
1.3. Redis의 단점:?
(1) 단일 스레드?
(2) 메모리 소비
10. /p> p>
Apache Shiro는 인증 및 권한 부여를 단순화하도록 설계된 Java용 보안 프레임워크입니다. Shiro는 JavaSE 및 JavaEE 프로젝트 모두에서 사용할 수 있습니다. 주로 신원 인증, 권한 부여, 기업 세션 관리 및 암호화 등을 처리하는 데 사용됩니다. Shiro의 구체적인 기능은 다음과 같습니다:
(1) 신원 인증/로그인, 사용자가 해당 신원을 가지고 있는지 확인합니다.
(2) 권한, 즉 권한; 확인, 특정 인증된 사용자에게 특정 권한이 있는지 여부, 즉 사용자가 작업을 수행할 수 있는지 여부를 확인하는 일반적인 예는 사용자에게 특정 역할이 있는지 확인하는 것입니다. 또는 사용자가 특정 리소스에 대해 특정 권한을 가지고 있는지에 대한 세밀한 검증;
(3) 세션 관리, 즉 사용자가 로그인한 후에는 세션이 되며 그의 모든 정보는 세션 중에 세션은 일반 JavaSE 환경이나 웹 환경에 있을 수 있습니다.
(4) 비밀번호가 암호화되는 등 데이터 보안을 보호하기 위한 암호화입니다. 일반 텍스트로 저장되는 대신 데이터베이스에 저장됩니다.
(5) 웹 환경에 쉽게 통합될 수 있는 웹 지원?
캐싱: 캐싱 등 , 사용자가 로그인한 후 Go 확인 때마다 사용자 정보와 역할/권한을 업데이트할 필요가 없으므로 효율성이 향상될 수 있습니다.
(6) shiro는 멀티 스레드 애플리케이션의 동시 검증을 지원합니다. 즉, 한 스레드에서 다른 스레드를 시작하면 권한이 자동으로 전파될 수 있습니다.
(7) 테스트 지원을 제공합니다.
(8) 한 사용자가 다른 스레드인 것처럼 가장하도록 허용합니다. 액세스를 위한 다른 사용자(허용하는 경우)
(9) 기억하세요. 이것은 매우 일반적인 기능입니다. 즉, 한 번 로그인한 후에는 다음에 로그인할 필요가 없습니다.