본문 바로가기

Dev-/Spring

mybatis selectKey 사용시 주의점(MAX() 사용 관련) 아래와 같이 사용해야 한다. (아래는 MySQL, 다른 DBMS는 찾아서 보시면 됩니다.) SELECT LAST_INSERT_ID() 아래와 같이 사용하면 데이터가 꼬일 수 있다. SELECT MAX(seq) FROM CS_ORDER 결론:각 DBMS의 가장 최근 pk값을 가져오는 함수를 써야 한다. 참고: https://stackoverflow.com/questions/3180510/last-insert-id-vs-select-maxid
@PathVariable .(dot, 점) 포함된 값 받기 @PathVariable로 값을 보낼때, email과 같이 .을 포함한 값을 보내면url이 점을 데이터로 해석하지 않고, 도메인의 .으로 인식하는지 점 이전의 값만 넘어와서 한참 헤멨다. 해결법은 아래와 같다.@RequestMapping(value = "/checkEmailDupl/{email:.+}")
스프링 classpath가 가리키는 곳 리소스 관련 설정을 할때 classpath:~~~~~와 같은 설정을 많이 한다. classpath가 가리키는 루트 디렉토리가 어디일까 생각해봤을때,빌드 전 디렉토리를 보면 이해가 안 갈수가 있다. 가령 위와같은 디렉토리에서 mybatis 설정파일을 읽어온다고 했을때,classpath:mybatis/mybatis-config.xml 와 같이 설정을 해 준다. 그냥 어딘가에 resourses를 루트로 바라보게 해놨겠지..라고 생각을 했는데 사실은 빌드된 타겟 폴더에서classes를 루트로 잡고 있다고 한다.
스프링부트 AppicationContext 기본적으로 빈 팩토리 역할을 하며주로 빈, 리소스에 접근할 때 사용한다. public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver {AppicationContext가 상속하는 인터페이스들을 구현해 조금더 세분화되고, 명료하게 리소스 관련 접근을 처리할 수 있다.
@ComponentScan(컴포넌트 스캔) 1. 스캔 위치 설정 (--> 문자열로 정하는 것보다는, 클래스로 정하는 것 추천)2. 필터: 스캔할, 하지 않을 어노테이션 설정
스프링 빈 객체 사용 클래스 - AppicationContext ApplicationContext1. ClassPathXmlApplicationContext(xml)2. AnnotationConfigApplicationContext(Java)
스프링 여러가지 의존성 주입(DI) 방법 public class A { B b; public void setB(B b) { this.b = b; } } --> 의존성 주입 혹은 ==================================================== @Beanpublic class A{ @Autowired --> 의존성 주입 B b; } 혹은@Configuration public class AppConfig { @Bean public A a() { return new A(); } @Bean public B b() { return new B(); } } 혹은 @Configuration @ComponentScan(basePackages = "com.example.demo") public class AppConfig { } 혹은..
스프링 핸들러 매핑(Handler Mapping)이란 많이 들어는 봤지만, 정확히 뭔지 알아본 적이 없어서 정리해본다. dispatcherServlet으로 받은 요청을 Controller로 보내지는데,그런 요청이 어떤 룰으로 컨트롤러에게 보내는지(매핑하는지), 그 방법을 정해주는 클래스가 바로 Handler다. 다시말해 http://localhost:8080/test라는 요청이 있고,임의의 컨트롤러 HomeControllerd에서@Controller class HomeController { @RequestMapping(value = "/test") public String test() { return "test"; } } 위와같이 RequestMappirng으로 무의식적으로 url과 연결지어 준 게 그냥 된 것이 아니라핸들러가 있어서 가능했던 것이다. 스프..