▸Spring MVC25 스프링 의존 주입(DI)과 인터페이스 사용에 관하여 인터넷에서 자료를 검색하다보면 클래스를 작성할 때 무조건적으로 인터페이스 구현을 하고 있는 것을 심심찮게 볼 수 있습니다. 예를 들어 인터페이스 이름이 "user"라면 실제 구현되는 서비스 클래스 이름은 "userImpl"가 되는 것이죠. 깃허브도 아닌 인터넷 블로그에 있는 코드들은 대부분 간단한 로직이 대부분이라 처음 스프링을 접할 때 대체 왜 쓸데없이 클래스가 많아지고 코드만 복잡해지게 의미 없는 인터페이스를 사용하는걸까 하는 의문을 많이 가졌었습니다. 스프링을 공부하면서 얻은 결론부터 말하자면 스프링(특히 DI)에서 인터페이스 사용은 당연하고 필수적인 것이 맞지만, 개방 폐쇄 원칙(OCP)에 기반한 전략 패턴을 미리 설계한 것이 아닌 그저 습관적인 사용이라면 전혀 무의미하다는 것입니다. 이는 토비의.. ▸Spring MVC/기본 상식 2020. 4. 23. Mybatis, MySQL 계층형 게시판 쿼리, 페이징, Date 처리 - Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.2.9 Release - Build Tool : Maven 3.6.3 - ORM : Mybatis 3.2.8 계층형 게시판의 로직은 JSP/서블릿으로 작성할 때와 다른점이 없습니다. 다만 이번에는 오라클DB에서 MySQL로 바꾸면서 쿼리 방식이 좀 바뀌고, MyBatis로 DB 작업을 하면서 또 조금 바뀐 부분이 있어 정리합니다. 계층형 게시판에 대한 설명은 아래 링크를 참조하시면 됩니다. [JSP & Servlet/-.. ▸Spring MVC/기본 문법 2020. 4. 11. SMTP 서버를 이용한 스프링 메일 발송 (네이버 메일) - Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 - ORM : Mybatis 3.2.8 자동 로그인 시 2차 인증을 하기 위해 메일을 발송하는 클래스를 작성해봅니다. SMTP 서버를 직접 구축할 수도 있겠지만 이번 글에서는 네이버의 계정에서 제공해주는 SMTP 기능을 사용해서 메일을 보내는 기능을 구현하도록 하겠습니다. SMTP는 메일을 보내주는 역할을 하는 서버를 의미합니다. 반대로 POP은 메일.. ▸Spring MVC/기본 문법 2020. 4. 7. 스프링, Mybatis, MySQL_쿼리문 다중 파라미터 사용 [5/5] - Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 - ORM : Mybatis 3.2.8 쿼리문에 파라미터가 여러개 필요한 경우가 있습니다. 이 경우에 해결책은 두 가지입니다. 1. 객체를 만들어서 대입 보통 VO 객체를 많이 사용합니다. ParameterType과 ResultType 모두 setter와 getter가 있는 객체 타입으로 넣어주고 필드명(정확히는 getter 메소드에서 get을 빼고 .. ▸Spring MVC/기본 문법 2020. 4. 3. 스프링, Mybatis, MySQL_트랜잭션 처리 [4/5] - Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 - ORM : Mybatis 3.2.8 [ 트랜잭션(TransAction) ] 한번에 수행되어야 할 쿼리의 묶음(Set) 모두 다 정상적으로 수행되지 못한다면, 아무것도 수행되지 않도록 하는 묶음 단위 트랜잭션은 '거래'라는 의미로 "실제로 돈을 받아야 통장에서 차감된다" 라는 의미입니다. 돈을 못받았는데 통장에서 차감되면 큰일나니까요. "모 아니면 .. ▸Spring MVC/기본 문법 2020. 3. 22. 스프링, Mybatis, MySQL_사용법(Mapper 인터페이스) [3/5] - Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 - ORM : Mybatis 3.2.8 [ Mapper 인터페이스 ] Mapper 설정 파일(xml)에 있는 SQL 쿼리문을 호출하기 위한 인터페이스 Mybatis3.0 이후부터 지원하는 방식 이전 방식이 Mapper 설정 파일(xml)에 있는 쿼리문의 ID를 직접 String 형태로 지정해서 사용했다면, Mapper 인터페이스를 사용한 방식은 인터페.. ▸Spring MVC/기본 문법 2020. 3. 22. 스프링, Mybatis, MySQL_사용법 [2/5] - Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 - ORM : Mybatis 3.2.8 Mybatis 연동 및 구조와 어노테이션 사용법은 이전글을 참조하시면 됩니다. [Spring MVC/- 기본 문법] - 스프링, Mybatis - MySQL 연동 [1/2] [Spring MVC/- 기본 문법] - @Resource, @Inject, @Autowired 사용 (자동 의존성 주입) [Spring M.. ▸Spring MVC/기본 문법 2020. 3. 22. 스프링, Mybatis, MySQL_연동 및 설정 방법 [1/5] - Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 - ORM : Mybatis 3.2.8 [ Mybatis ] 자바에서 제공하는 JDBC를 보다 편리하게 사용할 수 있도록 해주는 프레임워크 SQL 쿼리문을 코드 내에서 쓰지 않고 Mapper 파일에서 관리함으로써 코드와 SQL 쿼리를 분리 SQL 쿼리 수정 시 코드를 직접 수정하지 않아도 돼 유지보수 시 안정성을 높임 코드를 간소화하여 가시성을 높여줌.. ▸Spring MVC/기본 문법 2020. 3. 22. 스프링 Restful 서비스(API)_API 구현(XML) [3/3] - Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 - ORM : Mybatis 3.2.8 Restful API에 대한 기본 개념과, JSON을 이용한 구현 방법은 이전글을 참조하시면 됩니다. [Spring MVC/- 기본 문법] - 스프링 Restful 서비스(API)_기본 개념 [1/3] [Spring MVC/- 기본 문법] - 스프링 Restful 서비스(API)_API 구현(JSON) [2/3].. ▸Spring MVC/기본 문법 2020. 3. 21. 스프링 Restful 서비스(API)_API 구현(JSON) [2/3] - Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 - ORM : Mybatis 3.2.8 Restful 서비스(API)에 대한 간단한 기본 개념은 이전글을 참고하시면 됩니다. [Spring MVC/- 기본 문법] - 스프링 Restful 서비스(API)_기본 개념 [1/3] 진짜 Restful한 서비스에 대한 의견은 아직도 분분한 것 같고, 누군가는 이건 전혀 Restful한 서비스 구현이 아니라고 .. ▸Spring MVC/기본 문법 2020. 3. 20. 스프링 Restful 서비스(API)_기본 개념 [1/3] - Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 - ORM : Mybatis 3.2.8 [ REST (Representational Safe Transfer) ] HTTP URI를 통한 자원의 명시 HTTP Method를 통해 해당 자원을 제어하는 행위를 표현 데이터를 주고 받는 방식의 아키텍쳐 (디자인 패턴) Restful 서비스(API)란 REST 아키텍쳐를 준수하는 서비스라고 할 수 있습니다... ▸Spring MVC/기본 문법 2020. 3. 20. jUnit, Spring-Test 라이브러리 사용법 [ jUnit ] 전체 프로젝트(특히 WAS)를 구동하지 않고 단위 코드 테스트를 할 수 있게 해주는 라이브러리 [ Spring-Test ] jUnit을 확장한 스프링의 테스트 라이브러리 스프링 MVC 프로젝트를 진행할 때 코드 테스트를 할 때마다 WAS 구동을 하면 꽤나 답답한 경우가 많습니다. 이 때 jUnit 기능을 사용하면 프로젝트의 자원을 이용하면서도 필요한 코드만 간단하게 테스트해볼 수 있습니다. 다른 프로젝트를 하나 만들어서 테스트해볼 수도 있겠지만 이 경우 여러 가지 설정값이나 기능들을 사용할 수 없어 한계가 있습니다. 또 테스트를 하기 위한 코드는 "src/test/java" 와 "src/test/resources" 폴더 안에 넣고 사용하면 됩니다. 혹시 jUnit 라이브러리 import.. ▸Spring MVC/개발 TIP 2020. 3. 19. @Repository, @Service 어노테이션 - Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 - ORM : Mybatis 3.2.8 두 어노테이션을 알기 위해 먼저 스프링 컨테이너 구조와 빈(Bean)에 대해 알고 있어야 할 듯합니다. 컨테이너 구조는 모든 어플리케이션에서 사용하는 "루트 컨테이너", 각 서블릿이 사용하는 "서블릿용 컨테이너", 개발자가 임의로 생성해서 사용하는 "개발자용 컨테이너" 세 가지 종류가 있습니다. 컨테이너 이름은 .. ▸Spring MVC/기본 문법 2020. 3. 18. @Resource, @Inject, @Autowired 사용 (자동 의존성 주입) - Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 - ORM : Mybatis 3.2.8 세 개의 어노테이션은 컨테이너에 생성된 빈(Bean) 객체를 자동으로 주입받을 수 있도록 해주는 어노테이션입니다. Bean 객체를 이용할 때 코드를 아주 간결하게 해주기 때문에 필수로 사용되는 어노테이션입니다. 주의할 점으로는 Bean 객체가 생성될 때 어노테이션을 스캔해서 자동 주입해줍니다. 그냥 일반적인 방법.. ▸Spring MVC/기본 문법 2020. 3. 18. Junit 라이브러리 import가 되지 않을 때 프로젝트 규모가 커지면 테스트할 때마다 WAS 등 모든 프로그램을 구동시키는 것이 부담되기 때문에, 자바용 단위 테스트를 위한 표준 프레임워크인 Junit을 사용해 테스트를 진행하는 경우가 있습니다. 메이븐을 사용해 스프링 환경을 구성하면 디폴트 설정으로 Junit 라이브러리가 의존 설정이 돼 있고, 실제로 라이브러리 파일(.jar)이 있는 것을 확인할 수 있습니다. 그런데 멀쩡히 존재하는 Junit 라이브러리가 import가 되지 않는 경우가 있습니다. 이 경우 메이븐에 설정된 자바 버전과 메이븐 플러그인 버전을 올려주면 해결됩니다. 1.8 이상으로 올려주면 되고, 두 버전을 동일하게 맞춰주면 됩니다. 그리고 메이븐 업데이트를 한 번 해줍니다. 프로젝트를 우클릭해서 "Maven-Update Projec.. ▸Spring MVC/개발 TIP 2020. 3. 17. 이전 1 2 다음 💲 추천 글 반응형