- Spring MVC
- 데이터와 화면간의 의존관계를 벗어날 수 있게하는 개발 기법
- MVC 는 Model, View, Controller의 약자 입니다. 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴입니다.
- 스프링 프레임워크란?
- 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
- 동적인 웹 사이트 개발하기 위한 여러 가지 서비스를 제공함
- RequestMapping
- 요청 RUL을 어떤 메서드가 처리할지 여부를 결정하는 것
- DI (Dependency Injection) 의존성 주입
- 설정 파일이나 어노테이션을 통해 객체간의 의존 관계를 설정하여 개발자가 직접 의존하는 객체를 생성할 필요없음
- Spring AOP(Aspect Oriented Programming) 관점 지향 프로그래밍
- 트랜잭션, 로깅, 보안 등 여러 모듈, 여러 계층에서 공통으로 필요로 하는 기능의 경우 해당 기능을 분리해 관리.
- 현재 진행중인 프로젝트에서는 custom404를 만들때 AOP를 사용했다
- POJO(Plain Old Java Object)
- 일반적인 J2EE 프레임워크에 비해 특정 라이브러리를 사용할 필요가 없어 개발이 쉬움
- 기존 라이브러리의 지원이 용이
- IOC(Inversion of Control) 제어 반전
- 컨트롤의 제어권이 개발자가 아니라 프레임워크에 있다는 뜻.
- 객체의 생성부터 모든 생명주기의 관리까지 프레임워크가 주도하고 있음.
- 객체를 생성하고, 직접 호출하는 프로그램이 아니라, 만들어둔 자원을 호출해서 사용.
- Spring AOP가 무엇인지 OOP와 AOP를 비교하여 설명하시오.
- AOP는 Aspect Oriented Programming의 약자로, 관점 지향 프로그래밍이라고 합니다. 애플리케이션의 핵심적인 기능과 부가적인 기능을 분리해 Aspect라는 모듈로 만들어 설계하고 개발하는 방법입니다. OOP는 Object Oriented Programming의 약자로 객체 지향 프로그래밍이라고 합니다. OOP와 AOP는 서로 상반되는 개념은 아니며 오히려 OOP를 더욱 OOP답게 사용할 수 있도록 하는 것이 AOP입니다.
- 공통적 기능을 모든 모듈에 적용하기 위한 방법으로 상속을 이용하는데 Java에서는 다중 상속이 불가능합니다. 그리고 기능 구현 부분에서 핵심 코드와 공통 기능 코드가 섞여있어서 보기에도 불편하고, 효율성이 떨어집니다. 이러한 이유로 AOP가 등장했습니다.
- WAS와 WS의 차이
- WAS(Web Application Server) : 비지니스 로직을 넣을 수 있음 (Tomcat, PHP, ASP, Net 등)
- WS(Web Server) : 비지니스 로직을 넣을 수 없음 (Nginx, Apache 등)
- model1과 model2 패턴의 차이를 설명하시오
- model1은 뷰와 로직을 모두 JSP페이지 하나에서 처리하는 구조를 말하며 model2는 JSP페이지와 서블릿, 그리고 로직을 위한 클래스가 나뉘어 브라우저 요청을 한다.
- JSTL은 무엇이고 사용하는 이유는 무엇인가?
- JSP 표준 태그 라이브러리의 약어로써, 자신만의 태그를 추가할 수 있는 기능을 제공한다.
- 주로 JSTL의 core에서 c를 사용하여 <c:if> <c:forEach> 등으로 사용한다.
json VS xml
- json- JSON은 경량(Lightweight)의 DATA-교환 형식, 데이터를 저장하고 전달하는 메타언어입니다.- Javascript에서 객체를 만들 때 사용하는 표현식을 의미한다.장점 : JSON은 문자열을 전송받은 후에 해당 문자열을 바로 파싱하므로, XML보다 빠른 속도를 가지고 있습니다.단점 : JSON은 개발자가 문자열 데이터의 무결성을 검증해야 합니다.
- xml- XML은 HTML과 매우 비슷한 문자 기반의 마크업 언어(text-based markup language)장점 : 스키마를 사용하여 데이터의 무결성을 검증할 수 있습니다.단점 : XML은 배열을 사용할 수 없고 (JSON은 배열 사용 가능), 데이터를 읽고 쓰는 것이 JSON 대비 느립니다.
동기 VS 비동기식
동기식 - 요청과 결과가 동시에 이루어지는 것. 설계가 간단하지만 결과가 주어질 때까지 아무것도 못하고 대기해야 하므로 비동기식 보다 비효율적이다.
비동기식 - 요청과 결과가 동시에 이루어지지 않는 것. 하나의 요청을 처리하는 동안 다른 요청도 처리가능. 동기보다 복잡하고 결과가 주어지는데 시간이 걸리더라도 그동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있음.
Mybatis 란?
객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크로서 JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거 합니다. Mybatis에서는 프로그램에 있는 SQL쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있는 장점을 가지고 있습니다.
MyBatis 특징
복잡한 쿼리나 다이나믹한 쿼리에 강하다 - 반대로 비슷한 쿼리는 남발하게 되는 단점이 있다.
프로그램 코드와 SQL 쿼리의 분리로 코드의 간결성 및 유지보수성 향상
resultType, resultClass등 Vo를 사용하지 않고 조회결과를 사용자 정의 DTO, MAP 등으로 맵핑하여 사용 할 수 있다.
빠른 개발이 가능하여 생산성이 향상된다.
'기술면접 준비해 보자' 카테고리의 다른 글
| 나쁜 공격 SQL인잭션은 무엇이고 어떻게 방어해야 하지? (0) | 2022.07.14 |
|---|---|
| Java <지속적으로 업데이트 중> (0) | 2022.07.05 |