반응형 분류 전체보기203 [Spring] Spring boot란 무엇인가 ? Spring Boot란 무엇인가 제품수준의 Spring 기반 Application을 만들때 도와준다. 개발자가 일일히 정의하지않아도 가장 널리 사용된다고 생각되는 설정(Spring 플랫폼뿐만 아니라 제3의 라이브러리까지)을 기본적으로 제공해준다. 목표 - 모든 Spring 개발을 할때 더 빠르고 폭넓은 사용성을 제공해준다. - 일일히 설정하지 않아도 설정되어져있는것들을 기본으로 제공해준다. 그러나 개발자가 쉽고 빠르게 원하는대로 바꿀 수 있다. - non-functional features 제공 (ex.. security, embedded servers 등) - 더이상 XML설정과 code generation을 하지않는다. 참고 : https://docs.spring.io/spring-boot/docs/.. 2020. 3. 4. [Spring] Spring boot parent dependencyManagement Spring boot 의존성을 받아오기 위해서는 2가지 방법이있다. 를 이용하는 방법과 를 이용하는 방법니다. org.springframework.boot spring-boot-starter-parent 2.2.5.RELEASE org.springframework.boot spring-boot-dependencies 2.2.5.RELEASE pom import 언뜻보면 같은것같지만 확실한 차이점이 있다. 를 사용하게된다면 필요한 dependency들을 가지고오는것 뿐만아니라 java버전을 1.8로 기본세팅 인코딩방식을 UTF-8로 세팅 리소스들을 읽는기능등 다양한기능을한다. 자세한기능은 여기에서 확인가능하다. 반면에 는 parent의 다양한기능은 제외하고 dependencyManagement기능만 수행하.. 2020. 3. 3. [Spring] Spring Security 알아보기 Spring Security란 ? 강력하고 커스텀마이징 인증과 접근제어를 할 수 있는 프레임워크 인증과 허가를 제공하는것에 중점을 둔 프레임워크 custom 요구사항이 생겼을때 쉽게 확장 가능하다. 특징 인증 및 허가에 대한 포괄적이고 확장가능한 지원 session fixation, csrf, clickjacking 공격으로부터 보호해준다. Servelet API integration Optional integration With Spring Web MVC 간단한 동작방식 Filter의 attemptAuthentication에서 this.getAuthenticationManager().authenticate(authRequest) 을 통해 알맞는 Provider를 찾아 authenticate로직을 실행하.. 2020. 3. 3. [Spring Boot] Spring Boot의 의존성 원리와 @SpringBootApplication Spring Boot는 간단한 xml설정으로 많은것을 사용할 수 있다. 이 게시글은 그 원리를 알아본다. 위와같은 parent로 설정된부분을 타고올라가다보면 최상위에 spring-boot-dependencies가 나오게된다. spring-boot-dependencies부터 아래로 내려오면서 설정되어있는 의존성들을 가져온다. 자동으로 가져오는 의존성들의 버전을 바꾸고 싶다면 부모의 버전을 바꾸면된다. 추가로 필요한 의존성이 있다면 위와같은 방법으로 추가하면 된다. 이로써 의존성 원리와 의존성 추가하는방법을 간략하게나마 알게되었다. @SpringBootApplication은 사실상 아래의 세가지 어노테이션으로 구성된다. @SpringBootConfiguration // configuration이랑 유사한 어.. 2020. 3. 3. [인프런] 실전! Querydsl (김영한님) 강의를 듣는 목적 동적쿼리를 위해 필요했다. Join등 복잡한 쿼리를 효율적으로 사용할 수 있는 무언가가 필요했다. 후기 필자는 게시판을 만들면서 Join과 DTO변환이 필요하였다. 이를 어찌 처리할까 생각을해보다가 JPA보다는 Querydsl이 효율성이 좋다고 판단하였다. 정확히 알고사용하는것을 좋아하는편이기에 Querydsl강의를 찾아보았다. JPA기초편을 들었던 김영한님의 Querydsl 강의가 있었다. JPA 기초편을 들으면서 매우 만족했기에 망설임없이 결제하였다. 결과부터 말하자면 대만족이다. Querydsl의 기본문법부터 원하던 DTO변환, 효율적인 페이징처리, Join등 실무에서 필요한것들을 많이 가르쳐주셨다. 나아가 Querydsl 지원클래스를 직접 만들어서 효율성을 극대화하는것을 보니 더.. 2020. 3. 2. [JAVA] 클래스변수와 인스턴스 변수의 이해 우와 같은 Class가 있을때 인스턴스변수와 클래스 변수는 아래와같다. 인스턴스 변수 number 클래스변수 x 인스턴스변수와 클래스변수의 공통점으로는 선언위치가 클래스영역이다 그렇다면 차이점은 무엇일까? 바로 생성시기이다. 클래스변수는 클래스가 메모리에 올라갈 때 생성된다. 반면에 인스턴스변수는 인스턴스가 생성될 때 생성된다. 위의 예제를 확인하면 BasicClass.number는 인스턴스가 생성이 되지 않았기때문에 에러가 나지만 BasicClass.x는 클래스가 메모리에 올라갈 때 생성이 되기때문에 정상적으로 실행된다. 그렇다면 위의 코드의 실행결과를 예측해보자. 결과는 아래와 같다 왜 이러한 결과가 발생되는지 아려면 static에 대한 이해가 필요하다. 위에서도 말했다시피 클래스변수(static, .. 2020. 3. 2. [JAVA] 객체지향언어의 장점 흔히들 객체지향언의 장점으로 아래 3가지를 꼽는다. 1. 코드의 재사용성이 높다 2. 코드의 관리가 용이하다 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. 필자는 1,2번은 이해를 했지만 3번은 객체지향언어를 쓰는데 왜 신뢰성이 높아져?? 라는 의문을 품고있었다. 이 의문은 자바의정석을 읽으면서 해결되었다. 신뢰성이 높아지는이유는 제어자와 메소드를 이용하여 데이터를 보호하고 올바른 값을 유지하도록 하고 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있어서이다. 필자는 코드의 중복을 제거하면서 만든 메소드가 항상 같은결과를 반환해주기때문에 올바른 값을 유지하도록 하여 신뢰성이 높아진다고 이해하였다. 출처 : 자바의 정석 3판 (저자 : 남궁성님) 2020. 3. 2. [Querydsl] Dto Q파일 만들기 아래와 같은 DTO파일이 있을 때 Q파일로 생성하는 방법을 알아보도록 하겠다. 1. 생성자 위에 @QueryProjection 어노테이션을 달아준다. 2. compileQuerydsl을 더블클릭한다. 3. 생성확인 2020. 2. 29. [데이터베이스] 트랜잭션이란 ? 트랜잭션이란 ? query를 수행할때 중간에 오류가 발생하면 Rollback을 통하여 처음부터 다시 수행하고 오류없이 실행을 마치면 commit을 하는 작업단위 사용이유 여러 클라이언트가 동시에 액세스할때 발생할 수 있는 데이터 부정합을 방지하기 위해 사용 한번에 하나의 트랜잭션만 허용하면 부정합은 발생하지 않지만 효율성이 떨어진다. 특성 ACID Atomicity (원자성) 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는것을 보장 Consistency (일관성) 트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지해야한다. Isolation (격리성) 트랜잭션 수행시 다른 트랜잭션이 끼어들어서는 안된다. (트랜잭션끼리 간섭이 있어서는 안된다.) Durability (지속성) commit이 되면 .. 2020. 2. 29. [Intellij] lombok 적용하기 1. Lombok 설치 2. compiler-annotation processors-enable annotation processing check -OK 2020. 2. 24. [Spring 기초] IoC란 ? IoC (Inversion of Control) 제어의 역전이라고 불리운다. 제어권이 역전 되었다는 뜻이다. 예전에는 의존관계의 제어를 개발자가 직접 해주었다. 그러나 제어권이 컨테이너로 넘어갔고 객체의 생성부터 생명주기의 관리까지 객체에 대한 제어권이 바뀐것을 IoC라고 한다. 위와 같은 Repository 객체가 있을때 과거에는 아래와 같이 개발자가 직접 제어했다. 하지만 제어권이 컨테이너로 넘어갔고 객체의 생성과 생명주기의 관리까지 할 수 있기때문에 아래와 같은 방식으로 바뀐다. IoC 컨테이너란 ? 핵심 Interface : BeanFactory Application Component 중앙 저장소 Bean 설정 소스로부터 빈 정의를 읽어들여 빈을 구성하고 제공하는 역할을 한다. Spring IoC.. 2020. 2. 23. [기초개념] 프로세스와 스레드 프로세스 사전적 의미 : 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 프로세스는 프로그램실행시 Code,Data,Stack,Heap의 구조로 되어있는 메모리 영역을 할당 받는다. 프로세스는 최소 1개이상의 스레드를 갖는다. 스레드 프로세스가 할당받은 자원을 이용하는 실행의 단위 스레드는 프로세스 내에서 각각의 stack만 따로 할당을 받고 code,data,heap은 공유한다. 2020. 2. 23. 이전 1 ··· 9 10 11 12 13 14 15 ··· 17 다음