저번 글에서, ConfigureSource에 대해 알아보았습니다. 그 글에서, 이런 이야기를 했습니다. 객체가 생성되었을 때, 완전한 상태가 되게 할 수는 없을까? 정확히 말하면, 객체가 생성되었을 때, 설정이 되어야 하는 값은 생성이 될 때 setting이 되게 할 수 없을지를 고민해 보자고 하였습니다. 그에 대한 답이 될 수 있는 것은 ConstructorBinding 어노테이션을 쓰는 것입니다. ConfigurationProperties 어노테이션을 보면, 세터를 쓰거나, ConstructorBinding을 쓸 수 있다고 되어 있습니다. binding을 하는 방법에는, 세터 메서드 말고도, 생성자로 할 수 있다는 이야기입니다. 그래서 위에 해당 어노테이션을 적어 주었습니다. 해당 어노테이션에 대한 ..
웹/스프링부트 검색 결과
저번 시간에 설정 파일을 분리하는 것을 했었습니다. 이번에는 properties 파일의 설정값을 불러와 보겠습니다. 프로젝트 구조는 위와 같습니다. 다른 건 없습니다만, com.example.demo.init에 ConfigureSource 클래스가 추가되었습니다. application.properties에는 spring.profiles.active가 있습니다. 이것의 설정값은 B입니다. 이 값을 참조해서, 설정값을 불러온다고, 이 글에서 이야기를 했던 기억이 납니다. 만약에, 이 값이 B라면 application-B.properties를 참조하게 될 건데요. 이 안에 있는 셋팅 값을 보겠습니다. spring.server.port가 7776입니다. A의 셋팅값은 spring.server.port 값이 77..
spring으로 crud 하기 전에, 필요한 지식들을 먼저 보고 가겠습니다. spring boot 프로젝트를 보면, 왠 properties 파일들을 보게 됩니다. 이들은, 셋팅 파일인데요. 환경에 따라서, 이 값을 다르게 하고 싶다면 어떻게 하면 될까요? 문제 상황을 가정해 보겠습니다. 저는, A 환경에서는 7773번 포트로 http 요청을 받고, B 환경에서는 7776번 포트로 http 요청을 받으려고 합니다. 문제 상황을 단순화 시키면 먼저, 프로필 A를 만들고, B를 만들면 되는데요. 간단하게 프로필 파일로 관리하겠습니다. 공식 문서에 보시면, application-${profile}.properties가 그러한 역할을 한다고 되어 있으니, 그 파일들을 만들어 보도록 하겠습니다. 그 다음에 각각의 ..
mybatis의 xml 파일에서 '${id}' 이런 식으로 쿼리문을 작성했을 때, 단순히 append가 된다는 것은 저번에 이야기를 해 드렸습니다. 어떻게 이런 일이 일어나는지 조금 깊게 들어가 보도록 하겠습니다. 일단 id는 'or 1 = 1-- 이고, pw는 1234입니다. 이렇게 입력할 겁니다. 실험으로 쓰일 sql 문은 다음과 같이 xml 파일에 작성하였습니다. 일단, 제 Usert 클래스입니다. id, pw, num 필드가 있다는 것을 알 수 있습니다. 다음에, SqlSource를 implements한 DynamicSqlSource 클래스가 있는데요. 이 안에 getBoundSql이 있습니다. 느낌상 이 메서드가 바운드를 시킬 거 같으니, 적당한 위치에 브레이크 포인트를 걸어보겠습니다. 이 때 ..
mybatis의 sql문을 저장해 놓는 mapper 파일이 있습니다. 여기서 parameter를 $을 쓰는 거랑, #을 쓰는 것이랑 차이가 있습니다. 어떤 차이가 있는지 간단하게 알아보도록 하겠습니다. 대략적인 프로젝트 구조는 다음과 같습니다. DatabaseConfig.java는 데이터 소스를 초기화 하기 위한 클래스입니다. 그리고 속성 파일인 application.properties에 데이터 베이스 연결 정보가 들어 있습니다. /user/chk를 post 방식으로 호출을 하면 Controller의 chk를 호출합니다. 그리고 이것은 userdao의 checkId를 호출합니다. 이것은 sqlsession의 selectList를 호출하는데요. tempMapper.xml의 namespace가 com.exa..
최근댓글