본문 바로가기

개발중

(617)
[스프링] DI / IOC 가 뭐냐면 ? 디펜던시인젝션 인벌션옵브컨드롤 ,,,,,,,, !!!!! 🌱DI(Dependency Injection) DI(Dependency Injection)란 스프링이 다른 프레임워크와 차별화되어 제공하는 의존 관계 주입 기능으로, 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다. DI(의존성 주입)를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다. 첫번째 방법은 A객체가 B와 C객체를 New 생성자를 통해서 직접 생성하는 방법이고, 두번째 방법은 외부에서 생성 된 객체를 setter()를 통해 사용하는 방법이다. 이러한 두번째 방식이 의존성 주입의 예시인데, A 객체에서 B, C객체를 사용(의존)할 때 A 객체에서 직접 생성 하는 것이 아니라 외부(IOC컨테이너)에서 생성된 B, C객체를 조립(주입)시켜 setter 혹은 생성자를 통..
Visual Studio 같은 파일을 다른 탭으로 보기 분할탭 기능을 만들어보자 일단 윈도우, 리눅스 기준으로 ctrl + shift+ p를 누르면 short cut 리스트를 확인할 수 있습니다. File:OpenActive File in New Window ctrl + shift + p 입력시 창화면 그중에 File:OpenActive File in New Window 명령어를 확인해보면 현재 포커스 된 화면을 새로운 윈도우로 다시 띄워주는 것을 확인할 수 있다.
MySQL Error 1093 : You can't specify target table 'tablename' for update in FROM clause 원인 MySQL 은 Oracle 과는 달리 UPDATE 나 DELETE 시 자기 테이블의 데이터를 바로 사용 못하므로 아래와 같은 SQL 을 실행시 1093 에러가 발생함. UPDATE DEVEL_ANA_DICTIONARY SET USE_YN = 'Y' WHERE WORD_NO = ( SELECT WORD_NO FROM DEVEL_ANA_DICTIONARY WHERE WORD_NM = '007가방' ); 처리 Sub Query 를 하나 더 넣고 Sub Query 결과를 임시 테이블로 만든후에 실행하면 해결됨. UPDATE DEVEL_ANA_DICTIONARY SET USE_YN = 'Y' WHERE WORD_NO = ( SELECT TEMP.* FROM (SELECT WORD_NO FROM DEVEL_A..
[스프링] 동시성에 대해 공부 좀 했습니다. 🌱동시성 동시성 문제는 멀티 쓰레드 환경에서 발생하는 문제다. 그림처럼 여러 쓰레드가 동시에 동일한 자원에 접근해서 수정을 하는 경우 발생한다. 왜냐하면 동시에 값을 수정했을 때, 각 쓰레드가 기대하던 값과는 다른 형태의 값이 들어올 가능성이 있기 때문이다. 멀티 쓰레드 환경이라고 하더라도 싱글톤 객체에 단순히 '조회'만 하는 것이라면 동시성 문제가 발생하지 않는다. 문제는 동시에 동일한 자원에 접근해서 수정을 했을 때 발생한다. 이런 동시성 문제는 지역 변수에서 발생하지 않는다. 지역 변수는 쓰레드마다 각각 다른 메모리 영역이 할당되기 때문이다. 동시성 문제가 발생하는 곳은 같은 인스턴스의 필드 또는 static 같은 공용 필드에 접근할 때 발생한다. 특히 스프링 빈 처럼 싱글톤 객체의 필드를 변경하여..
[스프링] 프로젝트 생성 (1) https://start.spring.io/ 에서 프로젝트를 생성한다. Gradle project Java 스냅션 없는 2.7.5 버전 Jar 로 Java 는 11 Dependencies Spring web Lombok Generate 선택시 생성 압축 풀기 인텔리제이 File > Open 후 압축을 푼 경로로 build.gradle 찾아 OK 선택하기 Open AS Project 기다리면 된다는데 아래와 같은 문구가 뜬다. (경로를 잘 안잡아줬나 ? ) Please fix JAVA_HOME environment variable. 실행을 누른다 실행 페이지가 떴다
[mysql] 일, 주, 월, 년, 분기 통계 함수 🔊 🔊 🔊 🔊 일 일별 통계가 궁굼할 때는 Group By 로 date_format 을 day 까지 설정하기. SELECT COUNT(T1.seq) AS cnt , date_format(T1.day, '%Y-%m-%d') AS finDate FROM DEVEL_METADATA T1 GROUP BY date_format(T1.day, '%Y-%m-%d') 🔊 주 주별 통계가 궁굼할 때는 Group By 에 WEEK 를 이용하기. 주별 현황이 나온당. SELECT COUNT(T1.doc_nm) AS cnt , CONCAT( WEEK(T1.fin_date, 7), ' 주') AS finDate FROM DEVEL_METADATA T1 GROUP BY WEEK(T1.fin_date) 🔊 월 월 통계는 일 통계와 마찬가지로..
[SpringBoot] Spring Validation 기록 끄적 📸 Spring Validation Spring Validation 에 대해서 알아보자. 오늘 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술의 Bean Validation 에 대해서 강의를 들었다. 사실 개발을 할 때 큰 고민중에 하나가 "검증" 부분이다. 풀스택으로 개발할 때는 검증에 대해 큰 고민이 없었던게 사실이다. '프론트에서 내가 값을 잘 보내면 되니까' 라는 생각이었던 것 같다. 그러다 백엔드와 프론트를 분리 후 협업하며 내가 API 를 제공하는 포지션에 서있다보니 검증에 대한 중요성에 대해 깊이 고민하게 되었던 것 같다. 예를 들어 User 라는 dto가 있을 때 각 컬럼에 대해서 유효성을 설정하고 @Getter @RequiredArgsConstructor public class User {..
65279 아스키코드가 나와서 문자열 비교 안됨 ?! 😅 아래와 같은 String 이 두 개가 있다고 가정한 후 String a = "hello"; String b = "hello"; a.equals(b) 결과가 false 일 수 있다 ? 사실 나도 처음 겪는 일이라 ;;;; false 일 수 있다.... 아래처럼 문자열을 문자로 하나씩 보면 for( int i = 0; i < a.length(); i++ ){ System.out.println( (int)a.charAt(i) ) } 65279 의 값을 볼 수 있는데, 이게 문제다 문제 아래처럼 해결하기를 ! trim 도 안먹음 ,,, if(a.charAt(0) == 65279){ a= a.substring(1); }