스프링 22

스프링 배치 개요

최근에 시작한 프로젝트에서는 스프링 배치 프레임워크로 배치 프로그램 개발을 진행한다. Data Service나 Data Stage 같은 유료 GUI 툴을 이용하여 간편하게 배치를 돌리다가 자바 코드를 일일이 짜 넣어서 배치를 돌려야 하는 개발이 어렵고 번거롭게 느껴지는 부분이 있기도 하지만 그만큼 자유도가 높고 ETL 작업시 고려해야할 부분을 코드 단위로 찾아서 고민할 수 있으니 배울 수 있는 부분도 많이 있다. 이에 스프링 배치 프로그램에 대한 지식을 정리해 나가는 글을 연재해 나가고자 한다. 추가적으로 백엔드(스프링부트)와 화면개발(Vue)에 대한 학습도 진행해야 할듯하다. SI 프로젝트가 역할 분담이 안 되긴하기에 이것저것 다 할줄은 알아야하긴하는데 이전까지는 SAP 제공 툴들을 활용하는 데에 집중..

스프링 2024.04.08

자바 - 접근과 관련된 키워드 정리

final 자바 프로그램 언어에서 final키워드는 변하지 않는 값을 표현하기 위한 예약어 final-변수 변수를 선언과 동시에 초기화하며 이후 값을 수정할 수 없음. final-메소드 오버라이딩이 불가능 final-클래스 상속이 불가능 native native는 자바가 아닌 언어로 구현한 후 자바에서 사용하려고 할 때 이용하는 키워드이다. new 클래스의 인스턴스를 생성하게끔 하는 키워드. 새 객체에 메모리를 할당하고 해당 메모리에 대한 참조를 반환하여 클래스를 인스턴스화 한다. private 자기 자신의 클래스 내에서만 접근 가능 protected 동일한 패키지 내에 존재하거나 파생클래스에서만 접근 가능 public 접근 제한이 없음 static 클래스가 메모리에 올라갈 때 메모리에 할당. 같은 메모..

스프링 2022.03.06

Java - RuntimeException

RuntimeException is the superclass of those exceptions that can be thrown during the normal operation of the Java Virtual Machine. RuntimeException은 자바 가상 머신이 정상적으로 가동중인 상황에서 던져질 수 있는 예외 상황이다. RuntimeException and its subclasses are unchecked exceptions. Unchecked exceptions do not need to be declared in a method or constructor's throws clause if they can be thrown by the execution of the method..

스프링 2022.02.23

JAVA - StringBuilder

StringBuilder는 java.lang 패키지에 속하는 클래스로 문자열을 연결할 때 String 객체를 생성하여 둘 간에 덧셈을 하는 것으로 잇는 것보다 메모리 소모가 적게 문자열을 이을 수 있다. String 객체를 생성하고 덧셈을 하는 과정에서 각각의 String 객체는 사라지며 가비지 컬렉터에 들어가고 새로운 String 객체가 생기는 식으로 동작이 이루어진다. 따라서 리스트에 담겨있는 문자열을 String 객체로 담고 그들을 잇는 식으로 하는 것보다 StringBuilder를 이용하는 게 좋다. 위는 카드덱을 문자열로 보여주기 위한 메소드이다. 카드들을 형변환을 하고 StringBuilder를 통해서 연결하며 생성된 String으로 형변환하며 반환한다. 카드는 최대 52장이며 이들을 잇는데에..

스프링 2022.02.23

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 실습 끝!

http://www.yes24.com/Product/Goods/83849117 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - YES24 가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다. 경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링 www.yes24.com 정말 알차고 재미있는 실습이었다. 클라우드로 구현할 수 있는 세계가 방대하다는 것을 느낄 수 있었다. 초보적이지만 익혀놓았던 리눅스에 대한 지식도 활용할 수 있었고 데이터베이스에 대한 지식, 스프링부트의 활용, JPA에 대한 개념까지 알차게 필요하다 싶은 스택을 쌓고 확인할 수 있었다. 누군가가 스프링에 대해 어느 정도 익히고 개인 프로젝트..

스프링 2021.06.21

AWS RDS MariaDB 연결 문제..

스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 따라서 하나도 틀린 곳 없이 그대로 했는데도 불구하고 인텔리J 플러그 인을 통해서 RDS에 연결하려고 하니 아래와 같은 오류를 맞이했다. The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 우선 구글링을 했는데, 나와 비슷한 문제를 맞이한 사람들은 대부분 책에서도 설명하던 부분에서 해결을 보고 있었다. 보안 그룹 설정이나 퍼블릭 공유를 예로 설정했는가 하는 등의 초보적인 단계의 문제였다. 혹시나 빠뜨린 부분이 있을까 체크해보았지만 그 부분에서는 문제가 전혀 없었다. 초보적인 지식..

스프링 2021.06.19

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 따라하기 - 1

개요 토비의 스프링을 6장까지 공부하고 DI, IoC, AOP에 대한 개념이 어느 정도 잡힌 듯했다. 하지만 7장 이후로 공부해나가면서 더 이상 학습하는 것에 큰 의미가 없다는 생각이 들었는데, 토비의 스프링이 발간되었을 때와 지금의 개발 환경은 너무나 다르기 때문이었다. 스프링에 대한 개념을 기본부터 다지고, 개발자로서 좋은 코드라는 게 어떤 것인지에 대한 개념을 세우는 기본적인 교과서로서 반복을 줄이고, 기능 관점 별로 분리하고 하는 것에 대한 개념을 잡는데는 유용했지만 현재 개발 환경 기준의 프로젝트를 설계하고 그 도구들을 익히는 것은 다른 책이 필요하다고 느꼈다. 스프링3.1 관련 개발 도구를 익히는 것은 현재 스프링5가 돌아가고 스프링부트2가 활용되고 있는 시점에서는 큰 의미가 없다고 느꼈다. ..

스프링 2021.06.18

토비의 스프링 - 3.4 컨텍스트와 DI

개요 1. JdbcContext의 분리 2. JdbcContext의 특별한 DI 본문 1. JdbcContext의 분리 전략 패턴의 구조로 보자면 UserDao의 메소드가 클라이언트이고, 익명 내부 클래스로 만들어지는 것이 개별적인 전략 jdbcContextwithStatementStrategy() 메소드는 컨텍스트이다. jdbcContextwithStatementStrategy()는 다른 DAO에서도 사용가능하기에 클래스 밖으로 분리 시키는 것으로 활용성을 높일 수 있다. 분리한 클래스를 JdbcContext라고 이름 붙이고 그 메소드를 workWithStatementStrategy로 이름 붙인다. JdbcContext는 DataSource에 의존하고 있으므로 DataSource타입 빈을 DI받을 수 ..

스프링 2021.06.18

토비의 스프링 - 3.3 JDBC 전략 패턴의 최적화

개요 1. add() 메소드에도 전략 패턴 적용 2. 로컬 클래스와 내부 클래스 제목 1. add()메소드에도 전략 패턴 적용 deleteAll()메소드를 개선한 것과 같이 전략 패턴을 이용하여 add()메소드에도 적용해보자. public class AddStatement implements StatementStrategy { User user; public AddStatement(User user) { this.user = user; } @Override public PreparedStatement makePreparedStatement(Connection c) throws SQLException { PreparedStatement ps = c.prepareStatement("insert into us..

스프링 2021.06.03

토비의 스프링 - 3.1 다시보는 초난감 DAO // 3.2 변하는 것과 변하지 않는 것

개요 1. 예외처리 기능 적용 2. 변하는 것과 변하지 않는 것 3. 템플릿 메소드 패턴 4. 전략 패턴 본문 들어가기 전에 이전 장인 테스트의 학습 테스트 부분은 배운다기보다는 테스트를 통해서 이루어가야할 개발자의 지침과도 같은 부분이라서 정리하지 않고 곧장 3장을 포스팅하게 되었음을 알린다. 1. 예외처리 기능 적용 기존에 작성하고 있던 초난감 DAO를 보면 예외처리가 없다는 문제점을 발견할 수 있다. JDBC코드를 처리할 때는 예외처리가 기본적으로 요구된다. 시스템에 문제를 일으키지 않기 위해서 특히 데이터베이스의 상태에 문제가 생기지 않게 하기위해서는 말이다. UserDao의 가장 단순한 메소드인 deleteAll()을 통해서 예외처리 기능을 적용시켜보겠다. public void deleteAll..

스프링 2021.05.31