Spring (7) 썸네일형 리스트형 [Spring] MyBatis CamelCase 적용하기 대부분 DB를 사용할때 칼럼명을 SnakeCase로 짓는다. 하지만 자바쪽의 변수명등은 CamelCase로 짓는 것이 일반적이다. 그렇기 때문에 Mybatis를 사용하는 경우, 보통 이를 편리하게 사용하기 위해 xml 설정을 해준다. Spring을 사용하는 경우는, src/main/resources 하위에 mybatis-config.xml 란 파일이 존재할 것이며, 전자정부를 사용하는 프로젝트의 경우는, src/main/resources 하위에 mapper-config.xml란 파일이 존재할 것이다. 나의 경우는 전자정부 프로젝트였으며, mapUnderscoreToCamelCase네임의 설정이 스프링이 제공해주는 매핑 설정이다. ++++ CamelCase로 되어있는 DB의 칼럼을 읽을 때.. [Error] - the annotation @value is disallowed for this location. the attribute value is undefined for the annotation. @Value({properties}) 어노테이션을 사용하여 스프링의 Global.properties의 값을 가져와 해당 조건을 만족하는 데이터만 조회하려 하였는데 제목과 같은 오류가 발생했다. 처음엔 롬복설치 에러인줄 알았으나 스프링에 의존성을 주입하는 클래스에서 사용하지 않아서 발생한 문제였다. (나의 경우 VO에서 애초에 불변값으로 지정해주려 하였음) @Value 메서드는 @Controller, @Repository, @Service, @Component 등 스프링 빈으로 등록하여 의존성을 주입(DI)하는 클래스에서만 사용하여야 한다. EX) [Error] - java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for Mybatis의 DAO와 XML 파일을 매핑해주는 과정에서 오류가 발생하였다. 심각: Servlet.service() for servlet [action] in context with path [/myweb2] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection d.. [Spring] - 직렬화를 하는 이유(implements Serializable) 웹개발을 하면서 VO클래스에 직렬화와 Serial ID를 설정해준 경험은 있는데 왜 쓰는지는 알지 못했다. 네트워크등의 통신을 할 때 객체를 바이트 코드로 바꿔준다는 개념은 알고 있었는데 자세한 이유는 알지 못했고 이를 찾아보던중 잘 설명된 글을 발견했다. Java 든 C# 이든 C++ 이던 간에 데이터의 메모리 구조는 크게 다음 2가지로 나뉩니다. - 값 형식 데이터: integer, float(single), charactor(또는 char 의 집합인 string) 등 - 오브젝트(레퍼런스) 형식 데이터: 메모리 번지(주소, Address)값 --> 주소값을 최종적으로 따라가면 값 형식 데이터를 참조 하게 됨. (C/C++) 또는 언어 차원에서 이 과정을 생략해줌 (C#, JAVA) --> 클래스의 .. [Spring] 스프링 빈 스프링 빈은 스프링 컨테이너에 의해 관리되는 자바 객체로 빈 등록은 설정 xml, 어노테이션, 설정 클래스를 이용해 등록할 수 있다. 등록된 스프링 빈은 오토와이어링을 통해 공급된다.(DI) 스프링 부트의 경우 어노테이션을 통한 빈 등록을 기본으로 한다. @Component, @Service, @Controller, @Repository, @Bean 등으로 필요한 Bean을 등록하고, 필요한 위치에서 @Autowired를 통해 주입받아 사용하는 것이 일반적이다. @Controller, @Service, @Repository는 @Component를 상속 받으며 스프링 컨테이너에 의해 자동으로 생성되어 스프링 빈으로 등록된다. @Bean : 개발자가 컨트롤할 수 없는 외부 라이브러리를 Bean으로 등록할 때.. [Spring] DI(Dependency Injection) JAVA 일반적인 구현 1 2 3 4 5 6 7 8 9 10 class ShotGun{ void fire() { ... } } class Game{ public gameRun() { ShotGun sg = new ShotGun(); sg.fire(); } } cs 프로그램에서 객체를 직접 생성하기 때문에 클래스 간 종속성이 발생하는 문제가 있음. 팩토리 패턴 구현 1 2 3 4 5 6 class Game{ public gameRun() { ShotGun sg = Factory.getInstance(); sg.fire(); } } Colored by Color Scripter cs 객체 생성을 하지 않고 팩토리 패턴으로 필요한 인스턴스를 얻어오는 구조. 어떤 ShotGun의 인스턴스가 전달될지 알 필요가 .. [Spring] 스프링 프레임워크 스프링 프레임워크란 스프링 프레임워크는 자바 기반의 오픈소스 프레임워크이다. 20개 이상의 서로 다른 모듈로 구성되며, 프로젝트 규모와 필요 기능에 따라 스프링 프레임워크를 기본으로 여러 모듈을 조합하여 사용한다. 스프링 프레임워크의 주요 특징 경량 컨테이너 : 객체 생성, 소멸과 같은 생명 주기를 관리하여 스프링 컨테이너로부터 필요한 객체를 얻어올 수 있다. 제어의 역행 지원(IOC) : 메서드나 객체의 호출 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다. 의존성 주입 지원(DI) : 각각의 계층이나 서비스 간에 의존성이 존재할 경우 프레임워크가 서로 연결해준다. 관점 지향 프로그래밍 지원(AOP) : 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으.. 이전 1 다음