분류 전체보기 183
-
횡단 관심은 여러 부분에 걸쳐 반복적으로 사용되는 로직이나 기능을 의미한다.그 기능 중 하나인 트랜잭션을 이번 팀 프로젝트 게시판 글 업로드 부분에 적용시켰다. [기존 로직]- Board 테이블에 글을 insert- 가장 최근에 저장된 글 번호(PK)를 찾는 selectOne- selectOne으로 찾아온 PK 번호를 사진과 함께 ImageFile에 insert 이때, 가장 최근에 저장된 글 번호를 받아오는 과정에서동일한 시간에 글이 동시에 올라오게 되면 잘못된 PK번호를 찾아올 수 있고,이미지 테이블에 업로드하는 과정에서 에러가 발생되는 경우 글이 insert 되면 안 되기 때문에이 로직을 하나의 트랜잭션으로 묶었다. 트랜잭션을 적용시키는 방법에는 2가지 방법이 있다. 1) XML 설정하는 방법 a..
-
횡단 관심Spring은 IoC와 AOP를 지원하는 경량의 프레임워크이다. 여기서 AOP란? 관점지향프로그래밍을 의미한다. 위 그림에서 세로줄은 핵심기능, 핵심 관리, 핵심로직을 의미하며 빨간색 가로줄이 횡단 관심, 공통 기능, 공통 로직을 의미한다. 횡단 관심은 핵심 로직과는 별도로 여러 모듈에서 공통적으로 필요한 기능이나 로직을 의미한다. ex) 인허가 확인, 인증(본인인증), 유효성 검사, 로그(로깅), 보안, 트랜잭션,... AOP는 비즈니스 로직과 횡단 관심을 분리하여 코드의 재사용성과 유지보수성을 높인다. 횡단 관심사를 적용하기 위해서는 AOP 기법을 사용하는 것이 좋다! Advice 비즈니스 메서드에 횡단 로직을 적용하기 위해 사용하는 핵심 개념이 Advice이다. Advice는 횡단 로직을 ..
-
파일 입출력 몇 가지 사전 작업이 필요하다. 우선 사진이 저장될 테이블 생성이 필요! 그럼 이제 이 데이터를 볼 수 있는 상세페이지가 필요하므로board.jsp 파일을 새로 만들어준다! // board.jsp내용 ${data.content} 작성자 ${data.writer} 이미지 메인으로 이동 태그를 사용해서 이미지가 있는 상태일 때와 없는 상태일 때를 구분하여 보여준다.c 태그를 사용했기 때문에 상단에 태그 사용할 수 있도록 선언 필요하고,이 상세페이지에서 사진 수정이 가능하기 때문에 데이터를 넘겨줘야 하므로 form 태그 사용해서 작성한다. 이때 이 form은 이미지만을 다루기 때문에 enctype="multipart/form-data" 로 설정하고,bid의 경우 view에서 넘겨주..
-
원인 및 내용jdbcTemplate 사용하여 DAO 작성하고 실행시키는데 발생된 오류이다. - org.springframework.dao.EmptyResultDataAccessExceptionIncorrect result size: expected 1, actual 0예상되는 값이 1개인데 실제로는 0개를 반환해서 발생된 오류라고 한다.이는 queryForObject를 사용하면서 발생된 오류인데,queryForObject는 0이나 1 초과의 행이 반환되는 경우에 에러를 발생시킨다고 한다.(1 초과의 경우 IncorrectResultSizeDataAccessException 에러 발생) 해결방안try-catch로 예외처리를 해주면 된다.처리 후 정상적으로 구동됨을 확인!!@Repositorypublic..
-
Spring이 해주는 것트랜잭션 관리자가 해준다.xml에 스키마 등록을 한다. 여기서 tx ==> 트랜잭션 관리 관련한 스키마! 트랜잭션 관리자를 등록해 준다. 트랜잭션기능의 단위를 뜻한다.하나의 기능 == 1 트랜잭션 ex) ①사용자가 1,000원 지불 / ②쿠키 10개 구입 / ③쿠키 2개를 이용하여 웹툰 한 화 미리 보기- 웹툰 구매 과정에서 인터넷 연결이 끊겼다고 가정했을 때1) 1,000원이 환불됨 >> ① ~ ③이 모두 하나의 트랜잭션으로 볼 수 있다.2) 1,000원 환불은 안 됐지만 쿠키는 10개 있음 >> ① ~ ② 1번, ③ 1번 >> 2 트랜잭션 *참고 트랜잭션 사용 시 advice를 사용한다. // applicationContext.xml 기존의 AOP..
-
템플릿 패턴템플릿이란?- 반복되는 로직을 캡슐화한 것.- 어려운(복잡한) 로직을 캡슐화- 가져다 쓰기만 하면 되니까 재사용 용이: JDBC가 아주 대표적인 템플릿 적용에 좋은 실습이라고 할 수 있다. 패턴) MVC, 템플릿, 싱글톤, 팩토리,.... DAO 고도화 * 로직, 성능 개선, 최적화 스프링에서 제공하는 JDBCTemplate 클래스를 사용한다. JDBCTemplate 클래스에서 사용하게 될 DataSource 클래스의 객체를 등록한다.여기서 객체등록이란? new를 뜻하며, 이는 메모리에 적재(load)를 의미한다.ex) Phone이 Watch를 사용한다즉, 의존성을 가진다고 할 수 있다! Spring에서 제공하는 JDBC를 사용하기 위해 pom.xml에 의존 주입을 먼저 작성한다. org.s..
-
스프링 컨테이너에서 Advice를 사용하기 위해 객체가 필요하고,해당 객체를 생성하기 위해 bean을 사용해 xml에 태그를 걸어준다. Advice 생성한 이 new 역할을 대신하니까,클래스 파일에 @ 어노테이션을 달아준다. Advice가 횡단 관심사이고, 이것은 서비스 레이어와 겹치기 때문에 @Service를 사용한다.또한 이 어노테이션을 달아준 클래스도 component 스캔 대상이기 때문에 xml에 클래스 안에서 누구랑 연결할지 정의할 수 있다.포인트컷 메서드를 만들고, 그 위쪽에 @Pointcut 어노테이션을 달아준다. @Pointcut("execution(* com.koreait.app.biz..*Impl.select*(..))") public void bPointcut() {} // 참조 메..
-
✨ 스프링- IoC와 AOP를 지원하는 경량의 프레임워크 구조- 프레임워크 : 구조, 틀, 규격 -> 개발자들의 역량을 상향평준화 한다. : 유지보수가 용이해진다.✨ IoC 제어의 역행(역전)제어는 new 하는 것 == 객체 생성 및 관리하는 것이것을 원래 개발자가 했는데 이제는 컨테이너가 한다.DS, HM, VR, Command 객체들, @Component, @Controller, @Repository, @Service,...+ 의존주입(DI) : 생성자주입, Setter 주입, @Autowired이렇게 의존주입을 함으로 ★결합도를 낮출 수 있음★== 유지보수를 용이하게 함 AOPAspect Oriented Programming관점 지향 프로그래밍 별 찍기, 배열에 저장: 절차 지향 프로그래밍 => ..
-
비동기처리는 크게 두 가지로 나뉜다.1) String (text) 반환true/false 반환, 0/1 반환, yes/no 반환ex) 좋아요 누르기, 데이터 있니 없니? (아이디 중복검사)2) Object(object) 반환List(똑같은 타입 여러개 보낼 때), Map(장바구니처럼 짝지어진 데이터),DTO(객체 하나 반환 ex.마이페이지), JSON(특정 규격을 맞추거나, 아예 다른 프레임워크 사용 시),.... 아이디 중복검사 비동기 구현먼저 아이디 값을 받아오는 input 태그 안에,문구를 띄워줄 공간인 태그를 작성해 준다. 아이디 그리고 내가 넣은 input 태그 내용을 비동기처리에게 알려줘야 하므로input 태그에도 id를 넣어줘야 한다! 그리고 현재 input 태그가 있는 jsp 파일에 ..
-
오류 원인 및 내용 어제까지만 해도 잘 돌아가던 서버가 오늘 다시 실행시키니까 java.lang.NullPointerException : Cannot invoke "java.sql.Connection.prepareStatement(String)" because "conn" is null이 발생되었다.😢 MySQL Command Line Client 도 비밀번호 입력하니까 바로 꺼져버리고,디비버에서도 서버 연결이 안 된다는 오류가 발생되었다. 원인은 MySQL 서버가 꺼져서 발생된 것..!! 해결방법1) 윈도우 + R 키 눌러서 실행창이 나오면 services.msc 검색 2) 목록에서 MySQL을 찾는다. 더블클릭해서 들어가 보니까 서비스 상태가 중지됨으로 나왔다. 3) 시작을 눌러준다! 이렇게..
-
원인 및 내용 Publising to Tomcat v10.1 Server at localhost...' has encountered a problem. Could not publising server configuration for Tomcat v10.1 Server at localhost.프로젝트를 실행시키니 위와 같은 오류가 발생되었다.이 오류의 경우 톰캣 서버가 손상됐거나, 프로젝트와 서버 매핑이 제대로 이루어지지 않아서 발생되거나,포트 충돌, 버전문제 등등 여러 가지 사유가 있다. 오늘은 일단 내가 해결한 방식에 대해서만 설명하겠다. 해결방안1) Servers 탭의 톰캣 서버 더블클릭 2) Modules 탭에 보면 내가 사용중인 프로젝트들이 나와있다.사용하지 않는 것만 지워주면 된다고 했는데, ..
-
2-Layerd 아키텍처자체 개발하는 기업 솔루션에 많이 등장한다. Controller에 Service 멤버변수를 끼워 넣으면서 서비스 레이어를 만들기 시작하면,그 기업은 대부분 2-Layerd 아키텍처라는 것을 사용한다. 1) Service 레이어를 추가했으니2) @Service == new Service 를 먼저 해주면 어떨까? 에서 출발.3) 또 다른 스프링 컨테이너 (== 루트 컨테이너(가장 먼저 일을 하는 컨테이너))를 추가현재 우리가 다루는 컨테이너가 총 3개가 있다.web.xml - 서블릿 컨테이너 (톰캣)ds-servlet.xml - 스프링 컨테이너applicationContext.xml - 스프링 컨테이너(루트 컨테이너) ds-servlet.xml 가 Controller이고,a..