목록development (74)
코딩하는 오징어
오늘은 스프링의 빈 스캔에 대해서 알아보자. 모든 빈을 XML에 일일이 선언하는 것이 귀찮게 느껴질 수 있다. 이때, XML문서와 같이 한곳에 명시적으로 선언하지 않고도 스프링 빈을 등록하는 방법이 있다. 빈으로 사용될 클래스에 특별한 애노테이션을 부여해주면 이런 클래스를 자동으로 찾아서 빈으로 등록하게 해줄 수 있다. 이렇게 특정 애노테이션이 붙은 클래스를 자동으로 찾아서 빈으로 등록해주는 방식을 빈 스캐닝을 통한 자동인식 빈 등록 기능이라고 하고, 이런 스캐닝 작업을 담당하는 오브젝트를 빈 스캐너(scanner)라 한다. 스프링의 빈 스캐너는 지정된 클래스패스 아래에 있는 모든 패키지의 클래스를 대상으로 필터를 적용해서 빈 등록을 위한 클래스들을 선별해낸다. 빈 스캐너에 내장된 디폴트 필터는 @Com..
클래스패스란(Class Path)란??클래스패스란 말 그대로 클래스를 찾기위한 경로이다. 자바에서 클래스패스의 의미도 똑같다. 즉, JVM이 프로그램을 실행할 때, 클래스파일을 찾는 데 기준이 되는 파일 경로를 말하는 것이다. 소스 코드(.java로 끝나는 파일)를 컴파일하면 소스 코드가 “바이트 코드”(바이너리 형태의 .class 파일)로 변환된다. java runtime(java 또는 jre)으로 이 .class 파일에 포함된 명령을 실행하려면, 먼저 이 파일을 찾을 수 있어야 한다. 이때 .class 파일을 찾을 때 classpath에 지정된 경로를 사용한다. classpath는 .class 파일이 포함된 디렉토리와 파일을 콜론으로 구분한 목록이다. java runtime은 이 classpath에 ..
오늘은 데이터베이스의 isolation level이 무엇인지 왜 필요한지에대해 알아 보겠습니다. 먼저 isolation level이란 트랜잭션에서 일관성이 없는 데이터를 허용하도록 하는 수준을 의미합니다. 트랜잭션에서 일관성이 없는 데이터를 허용하도록 하는 수준을 Isolation Level이라고 합니다. 예를 들어, 한 사용자가 어떠한 데이터를 수정하고 있는 경우 다른 사용자들이 그 데이터에 접근하는 것을 차단함으로써 완전한 데이터만을 사용자들에게 제공하게 됩니다. 또한, 많은 사용자들의 수정 작업으로 인하여 통계 자료를 작성할 수 없는 사용자를 위하여 읽기 작업을 수행할 수 있도록 Isolation Level을 변경할 수 있습니다. ANSI에서 작성된 SQL-92 표준은 네 종류의 Isolation ..
이번 글은 조금 길어 질 수 있겠네요. 항상 레퍼런스 용도로 글을 작성하다보니 최대한 간단하게 포스팅하였는데 초기환경 세팅은 중요하니까요!! spring boot를 이용하여 개발할 때는 초기환경 세팅이 정말 쉬웠는데 spring 4 mvc를 사용하려다 보니 설정해야할 것들이 꽤 있더라구요. 하지만!! 한번 간단하게 따라해보면 절대 어렵지않습니다. 그럼 시작 해봅시다! spring 4!!! 일단 여러분의 환경이 jdk1.8, maven이 세팅되어있다고 생각하고 진행하겠습니다. 먼저 spring은 의존성을 특징으로 갖고있기 때문에 spring을 이용하려면 여러 모듈들을 주입해야합니다. 예를 들어 spring-context만 있다고 해서 컨테이너를 관리 할 수 있는 것이아니라 spring-context를 이용..
Web.xml contextConfigLocation /WEB-INF/applicationContext.xml org.springframework.web.context.ContextLoaderListener rest org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/rest-servlet.xml 1 rest / dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/dispatcher-servlet.xml 1 dispatcher *.do * dispatcher 서블릿은 웹 페이지를 위한 것이고 rest ..
dispatcher-servlet.xml pom.xml com.fasterxml.jackson.core jackson-databind 2.9.3 org.springframework spring-webmvc 4.3.14.RELEASE org.springframework spring-web 4.3.14.RELEASE javax.servlet javax.servlet-api 3.1.0 provided RestTest.java package com.codingsquid.springMVCTest.dto; import lombok.Data; @Data public class RestTest { private String name; private int age; private String currentTime; } ..
AOP를 적용하기 전에 AOP가 무엇인지에 대해 먼저 알아보자. AOP란 Aspect Oriented Programming의 약자로써 바라보는 관점을 기준으로 프로그래밍하는 기법을 말한다. 문제를 해결하기 위해 핵심 관심 사항과 전체에 적용되는 공통 관심 사항을 기준으로 프로그래밍 함으로써 공통 모듈을 여러 코드에 쉽게 적용할 수 있도록 도와준다. AOP의 주요 용어 Joinpoint : Advice를 적용 가능한 지점을 의미. 메서드 호출, 필드 값 변경등이 Joinpoint에 해당Pointcut : Joinpoint의 부분 집합으로서 실제로 Advice가 적용되는 Joinpoint를 나타낸다. 스프링에서는 정규 표현식이나 AspectJ의 문법을 이용하여 Pointcut을 정의할 수 있음.Advice ..
@Beanpublic class RedisConfig { private @Value("${spring.redis.host}") String redisHost; private @Value("${spring.redis.port}") int redisPort; private @Value("${spring.redis.password}") String password; @Bean public JedisPoolConfig jedisPoolConfig() { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxTotal(30); jedisPoolConfig.setTestOnBorrow(true); jedisPoolConfig.s..