프로그래밍/Web-Spring

    Mybatis 다중 매개변수 중 객체(오브젝트) 변수 넘기기

    일반객체를 @Param으로 보내는 방법은 다른 블로그나 검색을 통해서도 쉽게 정보를 구할 수 있는데 매개변수 여러개 중 오브젝트 변수 또는 객체 변수가 포함되어 있을 때는 나오질 않아서 그 방법을 적습니다. String select(@Param("obj")Object object); 1. 오브젝트 1개 오브젝트문이 하나라면 그냥 그 안의 변수들을 사용하면 됩니다. 예를들어 object 안에 attribute1 attirbuete2 변수가 포함되어 있다면 get에서 설정한 이름 대로 그냥 사용하시면 됩니다."select * from thistable where id = #{attributename1} and pw = #{attributename2}"이런 식으로 말이죠. 2. 오브젝트 객체와 다른 변수Str..

    SpringFramework - ProxyFactoryBean 예제로 알아보기

    SpringFramework - ProxyFactoryBean 예제로 알아보기

    이전에 InvocationHandler 를 사용한 프록시 패턴과 팩토리 빈을 포스트 한 적이 있습니다. 저 위의 내용을 모르신다면 읽으셔야 이 포스트 내용이 이해가 가능합니다. Spring에서는 이 두 개를 단점을 보완하고 장점을 살려 두 개를 동시에 지원해 줄 ProxyFactoryBean이라는 클래스가 있습니다. 먼저 InvocationHandler를 대체할 MethodInterceptor를 설명할까요. InvocationHandler는 MethodInterceptor와 비슷하지만 한가지 다른 점이 있습니다. InvocationHandler는 아래와 같이 String plus2 = (String) method.invoke(target, args); invoke 메소드가 타겟 함수에 대한 정보를 가지고..

    SpringFramework(스프링) - 팩토리 빈(FactoryBean)

    SpringFramework(스프링) - 팩토리 빈(FactoryBean)

    스프링에서는 빈으로 관리할 수 없는 몇몇 객체들을 빈으로 활용할 수 있게끔 하기 위해 FactoryBean 기능을 제공하고 있습니다. 말 그대로 Bean을 뽑아내는 공장역할을 하는 클래스이죠. 예제코드로 살펴봅시다. 구성은 이러합니다 express 라는 메시지를 담고있는 객체를 FactoryBean에서 뽑아내며 xml은 Spring의 주입에 필요한 설정을 해주는 파일이고 Test는 테스트 클래스입니다. 위에서부터 볼까요public class express { String express; private express(String express) { this.express = express; } public String getExpress() { return express; } public static ex..

    JDBC 트랜잭션과 트랜잭션 추상화 (Transaction, Abstraction of Transaction)

    JDBC 트랜잭션과 트랜잭션 추상화 (Transaction, Abstraction of Transaction)

    자바에서 JDBC 데이터베이스 접근을 할 때는 자동적으로 트랜잭션이 적용됩니다. DB는 그 자체로 완벽한 트랜잭션을 제공해서, 다중 데이터의 수정이나 삭제 등을 요청했을 때 중간에 어떠한 오류나 외부 상황에 의해 작업이 종료되더라도 일부만 삭제되거나 하는 일은 없습니다. 이러한 일관성은 DB의 신뢰로 이어지죠. JDBC로 데이터베이스를 이용할 때 트랜잭션이 나눠지는 경계의 조건은 두가지입니다. 확정 작업의 커밋과 본래의 상태로 돌리는 롤백이죠. 하나의 쿼리 작업(업데이트, 삭제 등)이 끝나면 트랜잭션이 종료 됨과 동시에 새로운 트랜잭션 작업의 실행에 들어갑니다. 트랜잭션을 설명할 때 가장 많이 사용하는 예인 은행 계좌 송금을 예로 들어볼까요 트랜잭션을 통한 한 단위로 묶인 것이 아니라면, JDBC는 이 ..

    스프링 프레임워크 - Junit Test

    스프링 프레임워크 - Junit Test

    개발 상황에서 테스트의 중요성을 부인할 사람은 없을 것이라 생각합니다. 그것도 처음부터 자잘하게 꾸준히 테스트하는 게 나중에 생각해보면 시간을 많이 절약해주죠. 이 포스트에서는 간단하게 Junit에 대해 다룹니다. Junit은 클래스의 제어권한을 넘겨받아 어플리케이션의 흐름을 제어하는 프레임워크입니다. 테스트에서 Junit 프레임워크가 요구하는 조건은 두가지입니다. 메소드가 public이로 사용되어야하고, @Test 라는 어노테이션이 붙어야합니다. Junit은 어노테이션을 적극적으로 활용하죠. 1번의 @Runwith은 Junit의 기능을 확장해서 스프링과 관련된 기능을 사용하게끔 해주는 어노테이션입니다.모든 클래스는 클래스의 작업을 실행해주는 main 클래스가 있습니다. Junit의 경우 그 main 클..

    Spring - 파일 업로드 하기

    Spring - 파일 업로드 하기

    스프링 프레임 환경에서 파일 업로드 하는 법을 기록하도록 하겠다. 먼저 https://search.maven.org 에 접속하도록 하자 fileupload라고 치면 이러한 결과가 나온다 commons-fileupload의 버전명을 클릭하자 그러면 이러한 화면이 나온다 우리는 아파치 메이븐을 사용할 것이므로 저 코드를 복사하여 pom.xml에 붙인다. 귀찮은 사람들을 위해 여기도 남긴다. commons-fileupload commons-fileupload 1.3.3 이제 라이브러리 추가는 됬고 dispatcher-servlet.xml 을 찾아가자 (intellij의 경우 servlet-context.xml) 빈즈 안에 위와 같은 코드를 쳐놓는다.스프링이 멀티파트 영역을 관리하게끔 빈으로 설정해놓는것이다. ..

    Spring에서 mybatis 사용법

    Spring에서 mybatis 사용법

    mybatis는 sql 명령어를 관리해주는 편리한 라이브러리이다. sql 명령어를 매번 우리는 문자열로 지정해서 하나하나 적어주는 방식을 취했을 것이다. 이러한 명령어는 유지보수에서도 많은 노력이 필요할 가능성이 높고, 효율성이 떨어진다. 때문에 mybatis를 통해 관리해 주는 것이 좋다. 메이븐 스프링 개발환경에서는 설정도 간단하다. 먼저 pom.xml에 라이브러리를 추가하도록 하자 org.mybatis mybatis 3.4.5 org.mybatis mybatis-spring 1.3.1 org.springframework spring-jdbc ${org.springframework-version} mybatis와 mybatis를 연동하는 스프링 그리고 스프링과 jdbc를 연결하는 라이브러리이다. my..

    Spring 프레임워크에서 Oracle을 사용하기

    Spring 프레임워크에서 Oracle을 사용하기

    이번 페이지에서는 스프링 프레임워크에서 오라클을 사용하기 위한 방법에 대해 기록할 것이다. 스프링에서 오라클을 사용하기 위해서는 먼저 Oracle JDBC driver를 로컬 메이븐 저장소에 추가해주어야 한다. 왜 maven이 드라이버를 직접 추가하지 못하나 의문이 들어 찾아보았더니 maven과 oracle의 저작권 문제 때문이라는 글을 보았다. maven에서 oracle 드라이버를 직접 활용한다면 법률분쟁의 소지가 있어 우리가 메이븐 인스톨러를 직접 다운 받고, 레포지토리에 추가해줘야 해주고 라이브러리로 참고해야한다는 이야기이다. 순서대로 해보자 먼저 메이븐 인스톨러를 다운받는다 https://maven.apache.org/download.cgi 밑의 파일을 다운받아 준다. 그리고 적당한 곳에 압축을 ..

    junit을 통한 테스트 클래스 만들기

    junit을 통한 테스트 클래스 만들기

    이클립스던 intellij던 Spring을 만들었을 때디렉토리에 test라는 폴더가 보였을 것이다 이 테스트 폴더에 우리가 클래스를 생성하여테스트 서버를 설정하여 자료의 입력이 정상적으로 구동되는지 확인할 수 있다. 만약 실무에서UI 담당자가 일처리를 늦게해 UI를 이용할 수 없다면 자바 개발자가 기껏 코드를 만들어도 테스트 할 수 없는 경우가 생길 것이다. 이러한 상황에 대처하기 위해 Test클래스를 이용하는 것이다. 먼저 Test클래스를 위한 junit 라이브러리를 다운받도록 하자 junit은 이전에 포스팅 했던 MVNrepository에서 다운이 가능하다 https://mvnrepository.com/search?q=junit 여기서 다운을 할 수 있다 클릭해서 들어가서 추가하도록 하자 메이븐 코드..

    @ResponseBody, jackson-databind 라이브러리 활용

    @ResponseBody, jackson-databind 라이브러리 활용

    이 포스팅에서는 @ResponseBody와 jackson을 활용해보도록 하겠다. 코드는 다음과 같다. @Controller public class controller3 { private static final Logger logger = LoggerFactory.getLogger(controller3.class); @RequestMapping(value = "/rb-test") @ResponseBody public String testString() { logger.info("testString() 호출"); return "Hello, Spring!"; } @RequestMapping(value = "/json-test") @ResponseBody public Product testJson() { log..