Spring (31) 썸네일형 리스트형 SXSSFWorkbook를 사용한 엑셀 생성 및 다운로드 대용량 데이터 엑셀 파일 처리 기존 문제점 1. 엑셀 자체의 한계 : 데이터 양을 소화 못시키는 경우 발생 2. 엑셀 라이브러리 사용시 느려지는 경우 3. 데이터 조회 후 List에 담아두고 엑셀 파일 생성 작업시 메모리 부족상황 발생 4. 데이터 다운로드시 엑셀 파일 생성 시간 다수 소요 -> 클라이언트에게 표현을 어떻게? Spring Framework + MyBatis 환경 구현 방안 1. 엑셀 파일은 xlsx 를 사용해서 최대한의 데이터를 표현할 수 있도록 합니다. 2. 엑셀 라이브러리는 POI를 사용합니다. POI 에 있는 SXSSFWorkbook은 엑셀 파일 생성시 메모리상에 지정된 숫자의 행만을 유지하고, 초과되는 행은 파일에 적어 메모리 사용량을 줄일 수 있게 해줍니다. 단점은 현재 메모리에.. Servlet?? 자바 웹 어플리케이션 (Java Web Application) WAS에 설치(deploy)되어 동작하는 어플리케이션입니다. 자바 웹 어플리케이션에는 HTML, CSS, 이미지, 자바로 작성된 클래스(Servlet도 포함됨, package, 인터페이스 등), 각종 설정 파일 등이 포함됩니다. Servlet이란? 자바 웹 어플리케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할 서블릿을 정의 해보면 서블릿(Servlet)은 WAS에서 동작하는 Java 클래스이다. 서블릿은 HttpServlet 클래스를 상속받아야 한다. 서블릿과 JSP로부터 최상의 결과를 얻으려면, 웹페이지를 개발할 때 이 두가지(JSP, 서블릿)를 조화롭게 사용해야 한다. 스프링 웹 MVC @Controller : 요청을 Mapping할 수 있는 컨트롤러 역할을 수행하는 클래스. @GetMapping @PostMapping DAO, DTO, Service 더보기 출처 : 노력중인 게으름뱅이"DAO, DTO, Service" Spring Framework의 MVC에서 Model은 Service, DAO, DTO로 나눌 수 있다. DAO Data Access Object의 줄임말. DB를 사용해 데이터를 조회하거나 조작 기능을 담당 Domain Logic (비즈니스 로직이나 DB와 관련 없는 코드들)을 Persistence Mechanism과 분리하기 위해 사용 됨 Persistence Layer: Database에 data를 CRUD(Create, Read, Update, Drop)하는 계층 위와 같이 따로 분리해놓은 이유는 HTTP Request를 Web Application이 받게 되면 Thread를 생성하게 되는데 비지니스 로직이 DB로부터 데이터를.. Spring 용어 정리 WAS란? WAS (Web Application Server) WAS는 일종의 미들웨어로 웹 클라이언트(보통의 웹 브라우저)의 요청 중 웹 애플리케이션이 동작하도록 지원하는 목적을 가집니다.(Tomcat) 웹 서버의 기능들을 구조적으로 분리하여 처리하려는 목적으로 제시 - WAS에서 일을 나누어 역할 분담 웹 서버 담당 : 클라이언트로 부터 요청 받는 일과 화면에 표현하는 로직 컨테이너 담당 : 다양한 기능을 수행하는 로직 Servlet이란? 자바 웹 어플리케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할입니다. 서블릿을 정의해보면 서블릿(servlet)은 WAS에 동작하는 JAVA 클래스입니다. 서블릿은 HttpServlet 클래스를 상속받아야 합니다. 서블릿과 JSP로부터 최상의 결과를 얻으려.. 의존성 주입 DI(Dependency Injection) 이해 시켜줘 제발 DI 란? DI는 클래스 사이의 의존 관계를 Bean Configuration 정보를 통해서 컨테이너가 자동으로 연결해주는 것이다. 개발을 하면서 개발자가 제어를 담당할 필요가 없이 Bean의 설정 파일을 보고 의존관계가 필요하다는 정보를 추가해주기만 하면 된다. 그러면 오브젝트 레퍼런스를 외부(Container)로 부터 주입을 받아서, 실행 시에 동적으로 의존 관계가 생성된다. 결국 컨테이너가 흐름의 주체가 되어서 애플리케이션 코드에 의존 관계를 주입해주는 것이다. 1 2 3 4 5 6 7 public class Foo{ private Bar bar; public Foo() { bar = new SubBar(); } } cs 위와 같이 Foo 객체는 bar를 인스턴스화 할 수 있다. Bar 인터페이스를.. Spring Framework Ioc (Inversion of Control) 컨테이너 - ApplicationContext (Bean Factory) ApplicationContext 는 BeanFactory를 상속받고 있음 IoC 컨테이너가 하는 일 Bean 생성 Bean들 사이의 의존성을 엮음 Bean들을 제공해서 사용하게 해줌 다양한 방법으로 등록된 빈들은 서로간의 의존성 주입을 IoC 컨테이너가 해준다. Bean → IoC 컨테이너가 관리하는 객체 클래스 이전 1 2 3 4 다음