목록Framework/Spring (15)
코딩하는 오징어
오늘은 스프링의 빈 스캔에 대해서 알아보자. 모든 빈을 XML에 일일이 선언하는 것이 귀찮게 느껴질 수 있다. 이때, XML문서와 같이 한곳에 명시적으로 선언하지 않고도 스프링 빈을 등록하는 방법이 있다. 빈으로 사용될 클래스에 특별한 애노테이션을 부여해주면 이런 클래스를 자동으로 찾아서 빈으로 등록하게 해줄 수 있다. 이렇게 특정 애노테이션이 붙은 클래스를 자동으로 찾아서 빈으로 등록해주는 방식을 빈 스캐닝을 통한 자동인식 빈 등록 기능이라고 하고, 이런 스캐닝 작업을 담당하는 오브젝트를 빈 스캐너(scanner)라 한다. 스프링의 빈 스캐너는 지정된 클래스패스 아래에 있는 모든 패키지의 클래스를 대상으로 필터를 적용해서 빈 등록을 위한 클래스들을 선별해낸다. 빈 스캐너에 내장된 디폴트 필터는 @Com..
이번 글은 조금 길어 질 수 있겠네요. 항상 레퍼런스 용도로 글을 작성하다보니 최대한 간단하게 포스팅하였는데 초기환경 세팅은 중요하니까요!! 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..
Redis의 ZSET구조를 이용하여 LEADER BOARD 구현하기 @Repository public class LeaderBoardRedisRepository { public static final String KEY = "leaderBoard"; @Autowired private RedisTemplate redisTemplate; private ZSetOperations zSetOps; @PostConstruct public void init() { zSetOps = redisTemplate.opsForZSet(); } public List getPlayersRankOfRange(int startIndex, int endIndex) { Set rankReverseSet = zSetOps.reverse..