Programming/Java 22

(JAVA) Multi-Thread를 활용하여 메인페이지를 빠르게 불러오기

Mobile APP에서는 메인화면에서 워낙 많은 모듈을 호출하다보니 multi thread를 사용하여 병렬로 데이터 처리를 하는 방식이 나름 보편화 되어 있는것 같다. https://www.youtube.com/watch?v=IVt7HjUM0LQ&t=388s 최근 어느 사이트에서 Web 메인페이지가 느리다는 보고가 있었고, 그 이유는 메인페이지에서 특정 기관의 API에서 데이터를 받아오는데 시간이 소요되어서 느리다는 이유였다. 나는 위 Youtube의 멀티스레드 방식이 해결책이 되지 않을까 하여 자체적으로 테스트를 해보았다. 아래는 Controller에서 View에 특정 데이터를 던지는 것인데 @RequestMapping("/") public String index(Model model) { int te..

Programming/Java 2022.06.30

SpringBoot+Gradle 설정파일 정리

gradle 구성요소 1. gradlew 리눅스 또는 맥OS용 실행 쉘 스크립트 파일이다. 2. gradlew.bat 윈도우용 실행 배치 스크립트 파일이다. 3. gradle-wrapper.jar 로컬 환경에서 gradle build를 하게 되면, 로컬에 구성된 gradle 버전으로 빌드가 되지만 ./gradlew build 를 하게 되면, Wrapper에 명시된 버전으로 로컬 환경과 관계없이 프로젝트를 빌드할 수 있습니다. gradle wrapper는 GRADLE_USER_HOME에 찾는 gradle이 있는지 확인합니다. 만약 존재한다면 그 gradle을 사용합니다. 만약 없다면 wrapper는 해당 파일을 다운받습니다. 4. gradle-wrapper.properties Gradle Wrapper 설..

Programming/Java 2022.05.17

(JAVA) Gradle Build의 이해

Gradle 이란? Gradle은 Maven을 대체하는 빌드 도구입니다. Grooby 기반의 DSL(Domain Specific Language)를 사용합니다. 스프링 부트, 안드로이드 스튜디오에서는 Gradle을 사용되고 있습니다 Ant vs Maven vs Gradle [1] Ant Ant의 가장 큰 장점은 개발자가 자유롭게 빌드 단위(target)을 지정하고 빌드 단위간의 의존관계를 자유롭게 설정할 수 있다는 것입니다. 하지만 자유도가 높다는 것은 잘 활용할 경우 좋은 도구가 될 수 있지만, 잘 활용하지 못하면 그렇지 않을 수도 있습니다. [2] Maven ​ Maven의 가장 큰 장점은 Convention Over Configuration 전략에 따라 프로젝트 빌드 과정에 대한 많은 부분이 이미 ..

Programming/Java 2022.03.02

(JAVA) SpringBatch 사용을 위한 예제

전자정부 Spring Batch로 좋은 사용례를 보여주신 jydlove님께 감사드린다. 다만 해당 포스팅이 오래되다 보니 POM이 업데이트가 좀 필요했다. 그래서 재정비하고 아래에 포스팅 하였으니 참고하기 바란다. 출처 : https://jydlove.tistory.com/4?category=836164 개발 환경 설정 개발예제를 시작하기전에 프로젝트 설정에 필요한 내용을 정리해보자 전자정부프레임워크 메이븐 로컬 레파지토리 등록하기 메이븐 프로젝트 생성 후 pom.xml 설정하기 데이터 베이스 설치 1.로 jydlove.tistory.com 전자정부프레임워크 Spring Batch Guide https://github.com/eGovFrame/egovframework.rte.root/tree/master..

Programming/Java 2022.02.05

(JAVA, Gitlab) Git Submodule을 사용하여 멀티프로젝트를 진행해보자

Submodule을 가지는 프로젝트 구조의 장점 시스템 개발의 단위(형상)를 분리하여 빌드 및 배포가 용이하고, 모듈별로 레포지토리가 생겨 프로젝트별로 추적이 용이하다는 장점이 있다. Submodule 구조를 위한 Gitlab Repository 생성 및 Client 작업 Main, Sub 레파지토리 만들기 Main Project Repo https://myrepo.gitlab.com/mainproject.git 부모프로젝트로써 Domain의 시작. 전체 모듈의 구조 정의 Common Project Repo https://myrepo.gitlab.com/commonproject.git Sub Project 중 하나로 대부분 모듈에서 사용되는 것들의 집합. 얇은 의존성을 위해 프로젝트 내 기타모듈 참조 없..

Programming/Java 2022.01.21

(SpringFrameWork) Dependency 오류 시 봐야할것. dependencies could not be resolved

늘 사용하던 환경이 아닌 새로운 환경에서 SpringFramework 세팅을 하다보면 여러 난관에 봉착한다. 회사마다 특정 Private Nexus Central Repository에 연동하는 경우도 많고 보안적인 이유때문에 인증서관련 네트워크 문제도 있다. 이럴때 우선 하나하나 체크해가며 확인해보자. 참고로 Maven Build를 기준하여 설명한다. [Run As]-[Maven Clean]을 하고 [Maven Build]를 하자. 만약 Dependency문제가 있으면 'dependencies could not be resolved...' 라고 뜰것이다. 1. Maven settings.xml 확인 ~/maven/conf/settings.xml 을 에디터로 열어 Central Repository가 어디인..

Programming/Java 2022.01.20

[완독정리] 자바웹을 다루는 기술 5(스프링부트)- 길벗

스프링부트 스프링 프레임워크보다 의존성 관리가 용이할 뿐만아니라 배포 또는 테스트 역시 스프링 프레임워크보다 쉽고 빠르게 할 수 있습니다. 스프링부트로 개발하면 메이븐의 라이브러리 자동 업데이트 기능을 이어받을 수 있을 뿐만아니라 기존 스프링 프레임워크의 복잡한 설정 과정을 최대한 줄일 수 있어 편리합니다. - 일반적인 응용 프로그램을 단독으로 실행하는 수준으로 스프링 애플리케이션을 구현할 수 있습니다. - 프로젝트 환경을 구축할때 필요한 톰캣, jerry, UnderFlow 같은 서버 외적인 툴이 내장되어 있어 따로 설치할 필요가 없습니다. - XML 기반 설정이나 코드없이 환경설정을 자동화할 수 있습니다. - 의존성 관리를 쉽게 자동으로 할 수 있습니다. 구성요소 역할 application.prope..

Programming/Java 2021.02.15

[완독정리] 자바웹을 다루는 기술 4(스프링최종)- 길벗

스프링 애너테이션? DI나 AOP 같은 기능은 따로 XML파일로 설정한 후 애플리케이션에서 사용했습니다. 그러나 애플리케이션의 기능이 복잡해짐에 따라 XML설정파일의 내용도 복잡해졌고 관리에도 문제가 생기기 시작했습니다. 따라서 XML에서 설정하는 방법과 애너테이션 기능을 사용하는 방법 두가지를 혼합해서 사용하고 있습니다. 태그 태그를 사용해 패키지 이름을 지정하면 애플리케이션 실행시 해당 패키지에서 애너테이션으로 지정된 클래스를 빈으로 만들어 줍니다. 애너테이션 기능 @Controller 스프링 컨테이너가 component-scan에 의해 지정한 클래스를 컨트롤러 빈으로 자동 변환 @Service // 서비스빈으로 자동변환 @Repository // DAO빈으로 자동변환 @Component // 빈으로..

Programming/Java 2021.02.10

[완독정리] 자바웹을 다루는 기술 3(스프링, 마이바티스)- 길벗

마이바티스란? 기존 JDBC로 개발할 경우 반복적으로 구현해야 할 SQL문도 많을 뿐만 아니라 SQL문도 복잡합니다. 기존의 JDBC의 경우 다음 과정을 거쳐야 했습니다. connection → Statement 객체 생성 → SQL문 전송 → 결과반환 → close 이 방식의 단점은 SQL문이 프로그래밍 코드에 섞여 코드를 복잡하게 만든다는 것입니다. 이를 개선해 가독성을 높여 사용하기 편하게 만든 것이 바로 마이바티스 프레임워크 입니다. - SQL실행결과를 자바 빈즈 또는 Map객체에 매핑해주는 Persistence 솔루션으로 관리합니다. 즉 SQL을 소스코드가 아닌 XML로 분리합니다. - SQL문과 프로그래밍 코드를 분리해서 구현합니다. - 데이터소스 기능과 트랜잭션 처리 기능을 제공합니다. 마이..

Programming/Java 2021.02.09