프로그래밍 언어 65

SPRING 파헤치기 #1 - SPRING FRAMEWORK

★ 이 글은 김영한 님의 스프링 핵심 원리 - 기본편을 학습하면서 작성하였습니다. SPRING FRAMEWORK 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원 기술통합 : 캐시, 이메일, 원격접근, 스케줄링 테스트 : 스프링 기반 테스트 지원 언어 : 코틀린, 그루비 핵심 컨셉 자바 언어(객체 지향 언어) 기반의 프레임워크 좋은 객체 지향 어플리케이션을 개발할 수 있도록 도와주는 프레임워크 스프링은 다형성을 극대화해서 이용할 수..

어노테이션 @Valid와 @Validated

신규 프로젝트를 수행하면서 @Validated 어노테이션을 접하게 되었다. if문을 사용하지 않고 간단하게 유효성 검증을 할 수 있는 좋은 기능이었고, 완벽하게 짚고 넘어가기 위해 정리글을 작성하게 되었다. @Valid 자바 표준 스펙으로, Controller 계층에서 사용이 가능하다. 주로 request body를 검증하는 데 많이 사용된다. MethodArgumentNotValidException 예외를 발생시킨다. 예제 사용자 정보에 대한 데이터가 들어올 때에 대한 검증예시를 작성해봤다. 이름, 전화번호, 이메일을 body로 전달받을 때 @Valid 어노테이션을 통한 검증이다. Controller package com.doomole.stockproject.controller; import com.d..

[SPRING] EXCEL 업로드하여 데이터 처리하기 #2

이전 글에서 엑셀 데이터에 대한 처리는 끝났다. 이후는 개발자가 원하는대로 데이터를 사용하면 된다. 방장은 Database를 update하는 작업을 수행했고 그에 대한 내용을 작성했다. [SPRING] EXCEL 업로드하여 데이터 처리하기 #1 엑셀 데이터를 파싱하여 Database를 업데이트할 수 있도록 해달라는 요청사항에 따라 개발을 수행하게 되었다. 까먹지 않기 위해 포스팅을 작성해본다. 시나리오 사이트의 장기 미사용자에 대해 many.tistory.com Service ExcelUtil getUpdateMemberList method에서 cell의 값을 가져온 ExcelUtil이다. cell의 타입을 가져와서 switch-case 문을 통해 맞는 type으로 데이터를 변환하여 반환한다. ★ cel..

[SPRING] EXCEL 업로드하여 데이터 처리하기 #1

엑셀 데이터를 파싱하여 Database를 업데이트할 수 있도록 해달라는 요청사항에 따라 개발을 수행하게 되었다. 까먹지 않기 위해 포스팅을 작성해본다. 시나리오 사이트의 장기 미사용자에 대해 문자메시지를 발송 후 발송된 시점으로 Database 업데이트 1. 웹페이지에서 파일을 등록하고 업데이트 버튼을 클릭 2. 서버에서 엑셀 파일 파싱 3. Dabase에 사용자 존재여부 확인 4. 존재한다면 database update 5. update된 사용자 수 페이지로 전달 예제로 아래와 같은 엑셀을 전달받을 경우 처리하는 방법에 대해 작성하겠다. pom.xml 필요한 라이브러리는 아래와 같다. 파일의 type을 체크하여 에러를 발생시키기 위해 apache tika 라이브러리를 추가했다. org.apache.po..

[DI] @Autowird vs @RequiredArgsConstructor

의존성 주입에는 생성자 주입, Setter 주입, 필드 주입이 있다. 방장은 필드 주입을 통해 프로젝트를 수행했었고, @Autowired 어노테이션을 사용했었다. 이직을 하면서 새 프로젝트를 수행하게 되었는데 이 때 @RequiredArgsConstructor 어노테이션을 처음 접하게 되었다. 결론부터 말하면 스프링에서는 생성자 주입을 권고하기 때문에 방장은 앞으로 @RequiredArgsConstructor를 사용할 예정이다. :D 따라서 이에 대해 정리해보려고 한다. @Autowired 의존 객체의 타입에 해당하는 bean을 찾아주는 역할을 한다. bean으로 등록되어 있지 않은 객체를 의존성 주입할 경우 에러가 발생한다. (Could not autowire. No beans of 'TestServi..

DI(의존성 주입) 란?

방장은 회사 프로젝트에서 @Autowired를 통해 객체를 주입하여 사용했었다. 이직을 하면서 다양한 프로젝트를 통해 생성자, Setter를 통한 의존성 주입을 경험하게 되었고, 그에 따라 DI에 대해 정리하게 되었다. DI(의존성 주입) ? Dependency Injection의 약자로 의존성 주입이라는 뜻 이해가 쉽게 코드로 설명하겠다. public class Code1 { ... } public class Computer { private Code1 code1 = new Code1(); public getCode() { this.code1.getCode(); } } 위 코드에서 Computer 객체가 Code1 객체를 생성하여 사용하고 있다.(Computer -> Code1에 의존한다.) 만약 ge..

Google SpreadSheet API와 JAVA 연동하기 #2

https://many.tistory.com/11에서 google에 대한 설정을 마쳤다. 이번 글에서는 java에서 코드 작성 후 api 연동까지 수행해보겠다. 방장은 maven spring boot 프로젝트로 라이브러리를 추가하여 개발을 수행하였다. 1. pom.xml 필요한 라이브러리들을 추가했다. com.google.api-client google-api-client 1.25.0 com.google.oauth-client google-oauth-client 1.34.1 com.google.apis google-api-services-sheets v4-rev612-1.25.0 com.google.oauth-client google-oauth-client-java6 1.21.0 com.google.oa..

Google SpreadSheet API와 JAVA 연동하기 #1

업무사항 중에 통계 데이터를 google sheet에 전송하여 사업팀에서 즉각적으로 확인할 수 있게 해달라는 요청에 따라 연동작업을 수행하게 되었다. 준비(Google) 1. google cloud 접속 에 google spreadsheet api를 검색 후 google cloud에 접속한다. 2. 프로젝트 생성 google 로고 바로 옆에 project를 클릭 후 새 프로젝트를 생성한다. 해당 프로젝트로 이동 후 API 및 서비스 사용 설정을 클릭하여 Google Sheets API를 사용으로 변경한다. 3. 서비스 계정 생성 좌측 사용자 인증 정보 탭을 클릭 후 사용자 인증 정보 만들기를 클릭, 서비스 계정을 생성한다. 방장은 google-spread-sheet라는 계정명으로 생성했다. 생성된 계정의..

01. 무작정 따라하기 - Django 실행

Django 문서 | Django 문서 | Django (djangoproject.com) Django 문서 | Django 문서 | Django Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate docs.djangoproject.com 처음에 공식 사이트의 가이드를 따라해봤다. 해당 내용은 투표 사이트를 만들어, 투표를 하고 해당 결과값을 보여주는 사이트를 만드는 내용에 대한 설명인데, 문서로만 따라하려니 이해도 쉽지 않았고, 따라해서 구현은 했으나 내가 새로 만들려니 엄두가 나지 않았다. 그래서 유튜브를 따라해보았..

시작이 반

방장은 PHP 개발자인데, 늘 PHP에 대한 고민이 많았다. 이직을 하기에도 다른 언어들에 비해 수요가 적다는 것이 가장 큰 고민이었는데, 그래서 요즘 가장 핫한 언어인 Python을 배우기로 했다. 현재 회사에서 홈페이지와 차트페이지 만드는 일을 하고 있으므로 백엔드언어인 DJANGO 부터 배워서 홈페이지를 백엔드로 구축해보려고 하고 있다. 시작이 반이니까 열심히 하자