목록Spring (34)
The Debugging Chronicles : "코드의 미학"
create table image( imageid int primary key auto_increment, path varchar(10000) not null, bid int not null ); 사용할 image table과 데이터 필요! 이미지를 변경하거나 업로드하는 로직 추가 view에서 넘겨 줘야할 데이터 hidden으로 보내주고 있음 미리보기 preview.js 파일 board.jsp로 올 때 data만 보내는 것이 아니라 image의 path도 전달 해야하기 떄문에command 객체를 추가 이미지 업로드를 활요하는 DTO에 멤버변수로 MultipartFile타입을 추가!!스프링에서 제공해주고 있다. commons-fileupload commons-fileu..
[트랜잭션]기능의 단위이다. 예)사용자가 1000원을 지불하여쿠키를 10개 구입하면쿠키 2개를 이용하여 웹툰 1화를 미리보기 만약에 와이파이가 끊겨서 1000원이 환불이 되었으면 1 트랜잭션이다. 만약에 와이파이가 끊겼을 때 쿠키남아있고 1000원 돌아왔다면2 트랜잭션이다. 트랜잭션 처리할 때 Advice를 사용구매라는 종단기능에 트랜잭션이 횡단으로 기능 주입 1. 스키마 추가 2.트랜젝션 관리자 추가 커넥션 확보를 위해 dataSource 3. advice 사용 만약에 select류만 다른 설정한다면 추가한다. 4. poincut과 연결트랜잭션에서는 apsect 가 아닌 advisor를 사용한다.txAdvice 가 우리에게 있지 않고 스프링에게 있기 때문이다. 하나의 서비스가 제대로 처..
개발자가 성능을 개선 시킬 때 ctrl+c,v하는 곳을 보는 것이 좋다 반복되는 로직을 캡슐화하는 것을 템플릿이라고 한다.어려운(복잡한) 로직을 캡슐화한다. 재사용이 용이하다. JDBC가 아주 대표적인 템플릿 적용하기 좋은 실습이다.Util 클래스 또한 일종의 템플릿이라고 볼수 있다. 지금까지 배운 패턴들을 되짚어보면MVC, 템플릿, 싱글톤, 팩토리, .... 가 있다. 템플릿을 적용해 보자 JDBC Template 클래스를 사용해보자! 스프링에서 제공해주고 있다. ===> 핵심! 1. JDBC Template 클래스에서 사용하게 될 dataSource 클래스의 객체를 등록== 의존성이 있다.== Phone이 Watch를 사용한다고 느껴져야한다. Data source 클래스는== conn(커넥션) 객체를..
pointCut들을 모아두기참조용 메서드들이여서 실제로 동작하지 않기 때문에 new 대상이 아니다그래서 어노테이션 service를 달지 않는다. pointcut 삭제 후 연결 pointcut도 aspect의 대상이므로 aspect 어노테이션을 달아주어야한다. pointcutCommon.javapackage com.koreait.app.biz.common;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;@Aspectpublic class PointcutCommon { @Pointcut("execution(* com.koreait.app.biz..*Impl.*(..))") public void ..
AOP 설정 Advice은 횡단 관심이다 Bean 태그들은 New이기 때문에 component 어노테이션 같지만핵심 로직은 Service이다 횡단 관심사들과 겹치므로 Service라고 쓴다.component-scan 대상이므로 넣어 준다. pointcut 설정 먼저 바꾸어보기19번째줄 먼저 바꾸기참조 메서드pointcut 경우 대소문자 잘 확인해서 어노테이션 넣어주기 누구랑 언제 결합할지를 정해야한다.어노테이션 before는 시점에 대한 설정이다.동작을 어느 시점에 누구랑 결합지를 썼고@Aspect는 결합 자체이다. 반환이 있는 경우에는바인드 변수를 써준다두개 이상 쓸때는 returing 속성까지 써주어야한다.
누가 등록했는지가 BoardDTO boardDTO에 저장되어 있다. weaving 처리 대상이다. 인자에 나의 비즈니스 메서드 정보를 가져다 달라고 스프링 컨테이너에게 부탁할 수 있다. 모든 CURD를 조인포인트라고 한다. 자동으로 나한테 해당하는 조인 포인트를 넘겨준다. 바인드 변수라고 한다. joinPoint에서 정보를 얻어 보자getSignature() 포인트 컷의 매개변수의 정보를 얻어 올수 있다. BoardService의 insert와 연결되어서 boardDTO가 하나가 나온다. returning을 사용하는 추가 실습 관리자 로그인 트래킹할 때 쓴다.슈퍼 계정(물건을 엄청 싸게 살수 있는 계정)에서 로그인 시 관리자가 개발자가 확인할 수 있도록하는 것이다. [한글코딩]로그인을 한..
IoC ====> 결합도를 낮추고AOP ====> 응집도가 높다 스프링은 유지보수 용이하다!!! AOP 적용은 쉽다.설정대로 하라는 대로 하면 된다.하지만 용어에 초점을 맞추어 봐야한다. 핵심관심, 비즈니스, CURD를 분리해준다. Advice란?== 횡단 관심== 공통 로직 로그를 찍는 공통 로직. 로그는 CRUD가 잘 수행되어서 잘 진입해는지 확인하기 위해 찍는다.개발자 new 하지 않는다멤버변수로 만들어 주입한다.어노테이션 주입 그런데 로그를 모든 곳에 찍어야 한다면?로그 성능을 업데이트 해야한다면? 객체지향프로그래밍(OOP)의 한계; Advice를 교체할때 코드가 많이 변경되므로 개발시간, 컴파일 비용이 많이 필요해진다. 해결 방법>> 스프링 컨테이너야.너 객체 생성 및 관리 할수 있잖아?네..
스프링:IoC와 AOP를 지원하는 경량의 프레임워크 IoC 제어의 역행(역전)new (== 객체 생성 및 관리) 를 원래 개발자>>컨테이너가 한다!DS,HM,VR,Command 객체들,@Component, @Controller,@Repository,@Service ,...+ 의존 주입(DI) : 생성자 주입, setter주입, @Autowired*결합도를 낮출 수 있음* 경량POJO 위주 : 구조, 틀, 구격 : 개발자들의 역량을 상향평준화, 유지보수 용이[AOP]Aspect Oriented Programming관점 지향 프로그래밍----------------------------JAVA == OOP(객체 지향 프로그래밍, Objec..
컨트롤러에서 데이터를 인자에 할당하는 대표적인 방법으로 @RequestBody 와 @RequestParamdl이 이다. @RequestBody@RequestParam객체 생성가능불가능각 변수별로 데이터 저장불가능가능 @Controllerpublic class UserController { @PostMapping("/receive") public String age(@RequestParam String name) { System.out.println("통신 성공"); System.out.println(">>> " + name); return "index"; }}@Controllerpublic class UserController { @PostMapping("/receive") public Strin..
searchContent.js를 만들어주고 ajax로 비동기 처리를 해준다. 여기서 ajax의 설정을 자세히 살펴보면 1. url: 'search.do'설명: AJAX 요청이 전송될 서버의 엔드포인트 URL이다. 여기서는 search.do가 서버의 URL **엔드포인트이다.2. method: 'POST'설명: HTTP 요청 메서드를 지정한다. 여기서는 POST 요청을 사용하여 데이터를 서버로 전송한다.3. data: JSON.stringify({ board_condition: condition, board_keyword: keyword })설명: 서버로 전송할 데이터를 지정한다. 이 데이터는 자바스크립트 객체로 작성되어 있으며, JSON.stringify를 사용하여 JSON 문자열로 변환된다board_c..