[Spring] 스프링 SimpleJdbcCall 이용하여 프로시저 호출해서 out 파라미터 얻기
스프링 SimpleJdbcCall 이용하여 프로시저 호출해서 out 파라미터 얻기SimpleJdbcCall을 이용하면 프로시저 호출을 간단하게 할 수 있습니다.만약 MS-SQL을 기준으로 dbo.sp_get_user_info라는 프로시저의 파라미터가 다음과 같이 있다고 가정했을때 이 프로시저는 두개의 입력 파라미터를 받아 두개의 출력 파라미터에 결과를 리턴합니다.dbo.sp_get_user_info@UserNo varchar(10) IN,@Name varchar(10) IN,@Age int OUT,@Grade varchar(10) OUT대략적인 코드는 다음과 같습니다. SimpleJdbcCall은 java.sql.DataSource 객체를 의존하므로 생성시 주입해주어야 합니다.public class Us..
Spring Framework
2019. 6. 5. 14:24
[Spring] 스프링 기동시 Error creating bean with name 'requestMappingHandlerMapping' 오류원인
스프링 기동시 Error creating bean with name 'requestMappingHandlerMapping' 오류원인만약 스프링 MVC를 사용한 웹 어플리케이션 기동시 아래와 같은 오류가 났다면 컨트롤러의 @RequestMapping 으로 설정된 경로를 확인하시기 바랍니다. 예외 로그를 자세히 보면 나와있지만 특정 맵핑 경로가 중복되어 발생한 오류입니다.org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in org.springframework.web.servlet.config.annotation.DelegatingWe..
자바[Java]
2019. 4. 4. 10:58
[Logback] 로그백(logback) 스프링(Spring)에서 사용 하는 방법
참고글[Logback] Logback이란? log4J의 후속작 로그백(Logback) 살펴보기 및 비교[Logback] 로그백(logback) 로그레벨(Log Level) 설정 및 알아보기스프링(Spring)에서 기본 로깅스프링에서는 따로 설정하지 않는한 기본적으로 Apache의 Jakarta Common Logging(JCL) 을 사용합니다.참고 경로 → commons.apache.org그러나 여기서 알아야 할 점 한가지가 있는데, JCL은 JDBC API와 같은 단순한 인터페이스 기능을 한다는 것입니다. 즉 JCL API를 구현하는 구현체 라이브러리가 있어야만 동작하는데, 대표적인 JCL 구현체로 log4j가 있습니다.즉 위와 같은 모습으로 스프링 내부적으로는 JCL API를 사용하지만 실제로 그 아..
Spring Framework
2019. 1. 8. 09:50
[Spring] MSSQL JdbcTemplate 프로시저 실행시 xx 문에서 결과 집합을 반환하지 않았습니다. 오류 원인
MSSQL JdbcTemplate 프로시저 실행시 xx 문에서 결과 집합을 반환하지 않았습니다. 오류 원인JdbcTemplate을 사용하여 프로시저를 실행했고 프로시저는 실행 결과를 출력하도록 되어 있었습니다. DBMS는 MSSQL Server입니다. 그런데 다음과 같은 오류가 발생합니다.org.springframework.jdbc.UncategorizedSQLException...Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 문에서 결과 집합을 반환하지 않았습니다.분명 SQL 클라이언트로 직접 프로시저를 실행하면 결과 테이블이 반환되는데, JdbcTemplate을 통해 실행하면 위와 같은 오류가 발생합니다.이럴때에는 SQL 구문 앞에 다음과 ..
Spring Framework
2018. 10. 30. 22:34
[Spring] XML 설정과 @Autowired 설정이 겹쳤을때 의존주입 우선순위
XML 설정과 @Autowired 설정이 겹쳤을때 의존주입 우선순위스프링 어플리케이션에서 객체의 의존관계를 설정할때 XML이나 자바 코드 설정을 통해 빈을 정의하고 의존 관계를 정의할수도 있지만 @Autowired를 통한 자동 의존주입을 이용할수도 있습니다. 그렇다면 만약 XML설정에서 의존관계를 설정함과 동시에 @Autowired를 통해 자동 의존주입을 받는 경우 어떤 설정이 우선순위를 갖게 될까요?이번글에서는 XML을 통한 명시적인 의존주입 설정과 @Autowired를 통한 자동의존주입 설정 두 가지를 적용하여 어떤 설정이 우선순위를 갖는지 테스트해보았습니다. 테스트 버전은 스프링 4.1.0 버전을 사용하였으니 참고해 주세요.MemberDao 클래스MemberDao 클래스입니다. 나중에 우선순위를 테..
Spring Framework
2018. 10. 22. 17:13
[Spring]@Primary 어노테이션과 UnsatisfiedDependencyException예외 more than one 'primary' bean 원인 및 해결 방법
UnsatisfiedDependencyExceptionUnsatisfiedDependencyException스프링에서 UnsatisfiedDependencyException이 발생하는 경우가 있습니다. UnsatisfiedDependencyException은 예외명에서도 알 수 있듯이 스프링 빈 객체들이 생성되는 과정에서 의존주입을 하게 되는데, 필드에 해당하는 의존관계를 만족시킬 수 없을때 발생하는 예외입니다.쉽게 말해 의존관계를 설정하는데 실패했다는 뜻입니다.Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sequenceGener..
Spring Framework
2018. 9. 19. 12:55
[Spring] 스프링 properties 사용시 UnsatisfiedDependencyException 발생 원인
스프링 properties 사용시 UnsatisfiedDependencyException 발생 원인서버를 기동하던 중에 UnsatisfiedDependencyException이 발생하면서 BeanCreationException예외가 발생하였습니다. BeanCreationException은 말그대로 스프링빈 객체 생성중에 특정 예외가 발생하여 빈 생성이 되지 못할때 던져지는 예외입니다. 예외클래스명에도 나와있듯이 원인은 명확한데, 특정 필드에 의존주입이 되어 있을것으로 예상했지만 의존주입에 실패했기 때문에 발생하는 것입니다.org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'DataSo..
이클립스[Elipse]
2018. 7. 31. 14:04
[이클립스] STS(Spring Tool Suite)로 스프링 MVC 프로젝트 생성하기
참고글[이클립스] STS(Spring Tool Suite) 플러그인 Marketplace에서 다운로드 받는 방법[이클립스] STS (Spring Tool Suite) 다운로드 및 설치 방법STS(Spring Tool Suite)로 스프링 MVC 프로젝트 생성하기STS를 이용하면 여러가지 기본 스프링 뼈대(Template) 프로젝트를 생성할 수 있습니다. 만약 STS 설치 방법이 궁금하신 분은 참고글 링크를 이용합니다.STS 플러그인이 설치된 이클립스 또는 STS의 상단 메뉴 File > Spring Legacy Project 클릭.또는 New > Other... 에서도 선택할 수 있습니다.다음과 같이 여러가지 스프링 프로젝트를 만들 수 있습니다. 단순한 Java SE 기반의 스프링 프로젝트나 JPA 등이..
Spring Framework
2018. 7. 24. 00:10
[스프링 프레임워크] Multiple ResultSets, SELECT 결과 TABLE 여러개일 때
결과 테이블이 여러개 - ResultSet이 여러개 리턴하는 저장 프로시저 SP저장 프로시저(Stored Procedure)의 실행 결과가 여러 테이블을 출력할 수 있습니다. 이러한 경우 단순히 JdbcTemplate 등에서 사용하는 queryForObject()나 queryForList() 등의 메서드로는 하나의 테이블 결과만을 다룰 수 있기 때문에 여러 테이블이 결과로 리턴되는 경우 처리할 수 없습니다.JDBC API 측면에서 보면 쿼리의 실행 결과가 여러 테이블을 리턴한다는 것은 ResultSet을 여러 개 리턴한다는 것입니다.MySQL 샘플다음은 여러 테이블을 결과로 리턴하는 매우 심플한 예제입니다. 별 의미 있는 DB는 아니며 단순히 예로 사용하기 위한 두 개의 테이블입니다. 다시 보니 인코ti..
자바[Java]
2018. 7. 23. 21:00
[Java] MySQL JDBC 연결시 예외 User does not have access to metadata required to determine stored procedure parameter types 해결 방법
Java로 JDBC 연결시 다음과 같은 예외를 마주할 수 있습니다.java.sql.SQLException: User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted, configure connection with "noAccessToProcedureBodies=true" to have driver generate parameters that represent INOUT strings irregardless of actual parameter types. at com.mysql.jdbc.SQLError.createSQLException(SQ..