Web(109)
-
Springframework @RequestBody 주의사항(?)
저와 같은 바보같은 분은 없을 것이라고 생각이 들지만 제가 겪었던 하나의 문제였기 때문에 작성해봅니다.... 만약 @Controller 클래스에서 요청바디에 넘어온 데이터를 받기위하여 @RequestBody라는 어노테이션을 다들 많이 쓰실 겁니다. 다른 분들은 절대 저와 같은 바보같은 짓을 하시지는 않으셨겠지만, 저는 요청 바디로 넘어온 데이터를 적절히 2개의 객체로 나누기 위해서 메소드 파라미터에 2개의 @RequestBody를 사용하였습니다. 근데 이게 뭐람 에러 뚜뚱... 에러가 발생하였습니다. 무슨 에러인가 막 찾아보고 고민하던 중에 중요한 사실을 알게되었습니다. 요청 바디로 넘어온 데이터를 받기위해 @RequestBody를 사용하는데 이 어노테이션은 스트림을 이용하여 요청바디의 데이터를 불러 온..
2018.09.30 -
springframework(스프링) Controller 작성전략(제네릭스,매핑정보상속)
모든 컨트롤러의 중복된 로직 코드량 확줄여버리는 코딩전략, 제네릭스와 매핑정보 상속을 이용한 컨트롤러 작성전략 웹개발을 하면서 지겹도록 작성하는 코드가 CRUD 관련 코드이다. 매번 똑같은 패턴이며 도메인 오브젝트만 바뀔뿐 딱히 로직이 크게 차이가 없다. 그렇지만 우리는 서비스 클래스는 물론 컨트롤러의 코드에 CRUD코드가 많이 중복되며 대부분 서비스클래스에게 작업을 위임해주는 작업뿐이다. 그렇다면 어떻게 중복된 것을 최대한 배제시킬 수 있을까?그것이 바로 제네릭스를 이용한 상속 전략이다. 바로 예제 코드로 넘어가면, 123456789101112131415161718192021222324252627282930313233343536373839package com.toby.spring.controller; ..
2018.09.20 -
xml을 대체하는 어노테이션
출처:https://www.slideshare.net/arawnkr/spring-camp-2013-java-configuration
2018.09.04 -
다양한 ApplicationContext 예제 및 소개
1.StaticApplicationContext-코드를 통해 빈 메티정보를 등록하기 위해 사용한다. 거의 사용되지 않는 구현체이다. 1234567891011121314151617181920212223242526272829303132 //단순 빈을 등록하고 불러오는 작업 StaticApplicationContext context=new StaticApplicationContext(); context.registerSingleton("hello", Hello.class); Hello hello=(Hello) context.getBean("hello"); hello.setName("yeoseong_yoon"); System.out.println(hello.getName()); //빈등록전에 해당 오브젝트에 대..
2018.09.02 -
JSR 303 어노테이션을 이용한 Validation 수행
JSR 303 어노테이션을 이용한 유효성검사 보통 웹 개발을 하다보면 컨트롤러에서 값을 받아와서 해당 객체의 변수의 유효성 검사를 위한 로직을 넣어봤을 것이다. 하지만 일일이 유효성 검사 로직을 넣는다는 것은 굉장히 불편한 일이다. 여기서 사용할 수 있는 어노테이션이 있다. @Controller@RequestMapping("/rest")public class AController{@Autowiredprivate AService aService; @RequestMapping("/.....")public ADto getADto(@Valid ADto aDto){ =>Dto 클래스에 정의한 어노테이션으로 유효성검사 진행......return aDto;}} public class ADto{@NotNullpriva..
2018.08.12 -
@Value 어노테이션
@Value 어노테이션(SpEL 이용)@Componentpublic class Sample{@Value("Some currency")private String currency;} @Componentpublic class Sample{@Value("#{configuration.environment}")private String environment;@Value("#{configuration.getCountry()}")private String country; @Autowiredpublic void printCountry(@Value("#{configuration.getCountry()}" String country)}System.out.println(count); =>메소드 및 생성자 인자에 @Value를..
2018.08.12