본문 바로가기

Web/Spring

(55)
Springboot - CommandLineRunner(커맨드라인러너) Springboot - CommandLineRunner(커맨드라인러너) Springboot에서 서버 구동 시점에 초기화작업으로 무엇인가를 넣고 싶다면 사용할 수 있는 방법 중 하나가 CommandLineRunner인터페이스를 상속받는 것이다. @SpringBootApplication 어노테이션이 붙어있는 부트구동 클래스에 CommandLineRunner를 implements하고 run(String... strings)를 Override한다.그리고 해당 run()에 애플리케이션의 초기작업(빈등록 과정 등등)이후 실행할 로직을 작성해주면 된다. 예제 코드는 항공편 예약서비스 예제인데, 애플리케이션 구동 시점에 예약가능한비행편을 알아보기위하여 검색 마이크로서비스 애플리케이션에 초기데이터를 삽입하는 코드이다. ..
Springframework QueryParameter 숨기며 뷰 리턴하는 방법 사실 아예 숨기는 것이라고는 말할 수 없지만 보통 사용자들이 보이지 않는다고 생각할 수 있는 쿼리파라미터를 생략한 뷰리턴 방법입니다. 사실상 보안에 강하다라는 그런 방법은 아닙니다. 단지 보이지 않을 뿐입니다. 123456789101112131415161718192021222324252627282930313233package com.kt.chatbot.ui.controller; import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springfr..
Springframework - RestTemplate(Restful) 요즘의 소프트웨어는 대부분 서버와 Json 형태의 데이터를 주고 받습니다. Json으로 주고 받게 되면서 이종소프트웨어 간의 통신도 자유로워 질수 있었습니다. 하지만 요즘은 클라이언트 단과 서버단의 Json 통신 이외에도 서버와 서버끼리도 Restful 한 통신을 하는 경우가 많아졌습니다. RestTemplate의 동작원리org.springframework.http.client 패키지에 있다. HttpClient는 HTTP를 사용하여 통신하는 범용 라이브러리이고, RestTemplate은 HttpClient 를 추상화(HttpEntity의 json, xml 등)해서 제공해준다. 따라서 내부 통신(HTTP 커넥션)에 있어서는 Apache HttpComponents 를 사용한다. 만약 RestTemplate..
간단한 springframework JdbcTemplate 예제 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263@Repositorypublic class LearnRequestDAOImpl implements LearnRequestDAO{ private static final String INSERT_SQL="INSERT INTO AIBOT_USER_LEARNREQUEST VALUES(LEARNREQUEST_SEQ.NEXTVAL,?,?,?,?,?)"; private static final String SELECT_BY_QUESTION="SELECT LEARNREQUEST_ID,LEARN_QUESTION,LE..
Springframework @RequestBody 주의사항(?) 저와 같은 바보같은 분은 없을 것이라고 생각이 들지만 제가 겪었던 하나의 문제였기 때문에 작성해봅니다.... 만약 @Controller 클래스에서 요청바디에 넘어온 데이터를 받기위하여 @RequestBody라는 어노테이션을 다들 많이 쓰실 겁니다. 다른 분들은 절대 저와 같은 바보같은 짓을 하시지는 않으셨겠지만, 저는 요청 바디로 넘어온 데이터를 적절히 2개의 객체로 나누기 위해서 메소드 파라미터에 2개의 @RequestBody를 사용하였습니다. 근데 이게 뭐람 에러 뚜뚱... 에러가 발생하였습니다. 무슨 에러인가 막 찾아보고 고민하던 중에 중요한 사실을 알게되었습니다. 요청 바디로 넘어온 데이터를 받기위해 @RequestBody를 사용하는데 이 어노테이션은 스트림을 이용하여 요청바디의 데이터를 불러 온..
springframework(스프링) Controller 작성전략(제네릭스,매핑정보상속) 모든 컨트롤러의 중복된 로직 코드량 확줄여버리는 코딩전략, 제네릭스와 매핑정보 상속을 이용한 컨트롤러 작성전략 웹개발을 하면서 지겹도록 작성하는 코드가 CRUD 관련 코드이다. 매번 똑같은 패턴이며 도메인 오브젝트만 바뀔뿐 딱히 로직이 크게 차이가 없다. 그렇지만 우리는 서비스 클래스는 물론 컨트롤러의 코드에 CRUD코드가 많이 중복되며 대부분 서비스클래스에게 작업을 위임해주는 작업뿐이다. 그렇다면 어떻게 중복된 것을 최대한 배제시킬 수 있을까?그것이 바로 제네릭스를 이용한 상속 전략이다. 바로 예제 코드로 넘어가면, 123456789101112131415161718192021222324252627282930313233343536373839package com.toby.spring.controller; ..
xml을 대체하는 어노테이션 출처:https://www.slideshare.net/arawnkr/spring-camp-2013-java-configuration
다양한 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()); //빈등록전에 해당 오브젝트에 대..