일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- react
- Spring
- flex-grow
- 싱글톤컨테이너
- cron표현식
- CSS
- singleton container
- 빈
- 톰캣실행
- Grid
- 스프링 빈
- 넥사크로
- frontend
- 싱글톤
- flex-basis
- annotaion
- gif초기화
- decoratetext
- 마진상쇄
- loadingimage
- 코딩
- 넥사크로loadingimage
- DB #데이터베이스
- 로딩이미지변경
- WITH절
- setrealrowsize
- BEAN
- aws
- HTML
- singleton
- Today
- Total
목록Back (16)
All Day Tired
AppConfig를 쓴다면 @Configuration을 사용했을 것이다.그리고 스프링 빈을 수동으로 등록했다면 코드 상으로 같은 클래스를 여러번 new한 상황이 발생하게 된다.(인스턴스를 한것이지)근데 여기서 의문스프링 빈은 스프링 컨테이너에서 1개씩만 만들어지도록 싱글톤 패턴이라는데 이러면 싱글톤이 아니게 되잖아?이런 의문이 생길 수 있다. 이것을 해결해준 것이 @Configuration스프링이 @Configuration에서 빈으로 만들어야하는 클래스를 조회해서 이 클래스들을 바로 스프링 컨테이너에 올리는게 아니라CGLIB 바이트코드 조작 라이브러리를 사용해서 AppConfig에 있는 클래스들을 상속 받는 클래스를 새로 만들어내서 이 새로 만들어진 클래스를 스프링 빈으로 등록하는 것!이렇게 새로 만들어..

싱글톤 등장한 이유애플리케이션은 여러 사용자의 요청이 동시에 들어옴여러 사용자가 요청을 할 때마다 객체를 새로 생성한다면 낭비가 심함그래서 등장한 것이 싱글톤 패턴 싱글톤 패턴클래스의 인스턴스(쉽게 생각하자면 new를 한 것)가 딱 1개만 생성위 처럼 여러 사용자가 요청을 동시에 할 때 인스턴스를 하나만 생성하고 이걸 공유함 싱글톤 구현 예제public class Singleton { private static Singleton singletonObject; private Singleton() {//private생성자로 new를 못하게 막음 } public static Singleton getInstance() {//getInstance()를 통해서만 인스턴스를 가져올 수 있..

기본 강의를 듣는데 참 신기하다 신기해...왜이렇게 새로울까... 스프링 컨테이너스프링 컨테이너는 스프링 서버 내부에 거대한 컨테이너(상자)이 컨테이너 안에는 클래스들이 들어감그리고 컨테이너 안에 들어간 클래스들은 스프링 빈이라고 부름컨테이너로 클래스가 들어갈 때 이 들어가는 빈에 대한 다양한 정보들을 컨테이너가 저장하고 인스턴스화(쉽게 생각하자면 new를 해준다)도 함 아래와 같은 일이 일어나게 됨 스프링 빈 등록스프링 빈을 등록하는 것은 크게 2가지로 생각할 수 있다.1) @Service, @Repository 같은 어노테이션으로 스프링 빈을 등록개발자가 직접 만든 클래스를 스프링 빈으로 등록할 때 보통 저런 어노테이션을 써서 등록하게 됨2) @Configuration + @Bean 조합으로 스프링 ..
강의를 듣는데 과제가 람다식과 익명클래스에 관한 내용...둘 다 학원에서 배우고 열심히 사용했으나 일하면서 즈어언혀 쓰지 않아서 다 까먹고 모름... 람다식이 등장한 이유간결하고 직관적인 코드 작성을 위해서 등장기존 자바 코드는 특정 작업을 수행하기 위해 익명클래스를 사용함하지만 익명클래스는 코드가 장황하고 읽기 어려움 -> 단점그래서 함수형 프로그래밍의 개념을 자바에 도입하면서 데이터 처리, 조작 작업을 더 효율적으로 할 수 있는 람다식이 등장 람다식?람다식은 자바 8에 도입된 기능이다.람다식 = 익명함수작업을 수행하려면 보통 메소드를 먼저 만드는데 람다식은 메소드를 만들지 않고 작업을 수행하는 코드 블록만으로 표현할 수 있다.(a, b) -> a + b //a, b 값을 받아서 더해 람다식과 익명클래..
강의듣는데 과제로 annotation이 무엇인지랑 annotation 만들 수 있는지 알아보는게 있어서 정리... Annotationspring2.5까지 DI, AOP 기능은 XML 파일로 설정했으나 애플리케이션이 복잡해지면서 XML 설정 파일 내용도 복잡하고 관리가 어려운 문제 발생그래서 spring 3.0부터 DI같은 자바 코드와 관련된 설정은 직접 코드에서 할 수 있도록 Annotation 기능을 제공하게 됨 순수 Java 에서는Annotation 용도가 3가지가 있다컴파일러에게 코드 문법 에러를 체크하도록 정보 제공(@Override : 부모 클래스나 인터페이스의 메서드를 올바르게 오버라이드 했는지 확인, 잘못되면 컴파일 에러 발생)소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 ..
이번 프로젝트 하면서 스케줄러를 사용해야할 때가 왔다...그래서 과장(놈)한테도 물어봤지... 스케줄러 따로 설정하는거 필요 없냐? 그냥 어노테이션만 쓰면 되냐?근데 과장(놈) 왈 어 그냥 어노테이션만 쓰면 된다그래서 스케줄러 돌려야하는 메소드 위에 어노테이션 @Scheduler(cron="0/40 * * * * * ") 이렇게 써줬는데 안 됨... 왜..? 과장이 하라는대로 다 해줬잖아....근데 안 된 이유가 있다....ㅎ 상황controller에서 scheduler를 돌려야하는 상황@Scheduler 사용했지만 돌아가지 않음 원인원인은 간단했다... 그냥 해당 controller 클래스에 @EnableScheduling를 써주지 않아서 문제였던 것... 근데 나는 이걸 처음 써봐서 좀 말도 안되는 ..
요즘 기계적으로 개발만 하는 기분이라 초심으로 돌아가는 의미에서 강의들으면서 정리한 내용을 적어봄.... 컴파일사람이 이해하는 코드를(ex. System.out.println("hello");) 기계가 이해할 수 있는 기계어(010101....)로 번역하는 과정 컴파일러컴파일을 하는 프로그램 바이트 코드(바이너리 코드)0과 1로 이루어진 코드, 컴퓨터가 이해하는 코드, 기계어0과 1의 조합(=바이트 코드)은 운영체제마다 달라서 같은 0과 1의 코드라도 윈도우에서는 hello가 출력될 수 있으나 맥, 리눅스에서는 hello가 출력되지 않을 수 있음.C언어의 경우에서는 각각의 운영체제마다 다른 컴파일러가 필요함. 그래서 이 컴파일러가 각각의 운영체제마다 다른 0과 1의 조합인 코드를 만들어냄.하지만 Ja..
강의 듣다가 일하면서 쓴 방법이 아닌 빈 등록 방법이 있어서 기억할 겸 정리... 우선 빈을 등록하는 방법 전에 빈이란 뭐냐Bean서버가 시작되면 스프링 서버 내부에 컨테이너가 만들어지고 이 컨테이너 안에 클래스가 들어감이 때 다양한 정보도 들어가고 인스턴스화 됨 -> 이렇게 컨테이너 안에 들어간 클래스를 스프링 빈이라 함의존성이 있다면 스프링 컨테이너가 의존하는 것도 빈으로 등록함즉, 스프링 컨테이너가 알아서 관리해주는 자바 객체스프링이 빈으로 등록한 걸 찾아서 알아서 객채 생성해주고 이걸 통해서 제어의 역전도 일어나고 이렇다고 이해 중... 그렇다면 이런 빈을 등록하는 방법은?컴포넌트 스캔과 자동 의존관계 설정자바 코드로 직접 스프링 빈 등록이렇게 2가지 방법이 있다. 1. 컴포넌트 스캔과 자동 의존..
개발하면서 딱히 optional을 써본 적이 없는데강의 듣다가 optional이 쓰여서 정리해 볼 겸 작성한다. Optional 이란null 값으로 인한 예외를 방지하게 해주는 컨테이너 객체null로 인해 발생하는 예측할 수 없는 결과를 방지하기 위해 사용 사용법보통 of나 ofNullable을 사용해서 optional 객체를 생성함Optional str1 = Optional.of("Hello"); //null이 아닌 특정한 값을 return, null이라면 NPE 에러를 냄Optional str2 = Optional.ofNullable("Hi"); //null이 아닌 특정한 값이 있으면 그 값을 return하고 아니라면 null을 return get으로 optional 객체 타입의 값을 가져옴Optio..
시작일자와 종료일자가 있을 때 이 둘을 빼서 소요시간을 구해야하는 쿼리를 만들어야 했다.그런데 내가 필요한건 'N일 N시 N분 N초' 이런식으로 조회 되었으면 하고0일 2시 2분 5초 이렇게 된다면 그냥 2시 2분 5초로 조회되길 원했다. 조건 'N일 N시 N분 N초' 로 한 컬럼으로 조회일시분초에서 일이 0이면 시분초만, 일과 시가 0이면 분초만 ... 이런식으로 조회 이걸 만족하기 위해서 일단 with절을 사용했다. 쿼리문WITH TIME_DIFF AS ( SELECT TRUNC((종료일자컬럼 - 시작일자컬럼), 0) AS DAYS , (TRUNC((종료일자컬럼 - 시작일자컬럼)*24), 0) - TRUNC((종료일자컬럼 - 시작일자컬럼), 0)*24) AS..