MapleStory Finger Point

๐ŸŸค JAVA/๐ŸŸค Spring 18

[Spring] AOP (Aspect-Oriented Programming)

AOP ๋ž€AOP ๋ž€ ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋‹ค.๊ด€์‹ฌ์‚ฌ (Aspect) ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹(์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ, ์œ ์ง€๋ณด์ˆ˜์— ํšจ๊ณผ์ )  Spring ์—์„œ๋Š” ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์—๋งŒ ์ง‘์ค‘ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋œ๋‹ค.๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์ด ์•„๋‹Œ ์ด์™ธ์˜ `๋ณด์•ˆ, ๋กœ๊ทธ, ํŠธ๋ž™์žญ์…˜ ๋“ฑ`์„ `ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ (cross-concern)` ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹คSpring ์€ ์ด ํšก๋‹จ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ์ž‘์—…๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ชจ๋“ˆ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋‹ค.  โœ… ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐ โœ… ์ปดํŒŒ์ผ or ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ๊ฒฐํ•ฉ โœ… ๊ธฐ์กด ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด, ์›ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ๊ฒฐํ•ฉ  AOP ํ‚ค์›Œ๋“œAspect (๊ด€์ ) ๊ณตํ†ต ๊ธฐ๋Šฅ(๋กœ๊น…, ๋ณด์•ˆ ๋“ฑ)์„ ๋ชจ๋“ˆํ™”ํ•œ ๊ฐ์ฒด JoinPoint (์กฐ์ธํฌ์ธํŠธ) AOP๊ฐ€ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์‹คํ–‰ ์ง€์  (๋ฉ”์„œ๋“œ ์‹ค..

[Spring] XML & Annotation ์„ค์ • (+ ์–ด๋…ธํ…Œ์ด์…˜ ์ •๋ฆฌ)

๋ชฉ์ฐจ  1. xml ๊ธฐ๋ฐ˜ ์„ค์ •`applicationContext.xml` ๊ฐ™์€ ์„ค์ •ํŒŒ์ผ์— Bean ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•  `` : xml ์„ค์ •์˜ ์ตœ์ƒ์œ„ ์š”์†Œ, Bean ์ •์˜`` : ์‹ค์ œ Bean ์„ ์ •์˜ํ•˜๋Š” ์š”์†Œ id ๋Š” Bean ์ด๋ฆ„ / class ๋Š” Bean ๊ตฌํ˜„ ํด๋ž˜์Šค`` : ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ๋ถ€๋ถ„ , ref ์†์„ฑ์€ ๋‹ค๋ฅธ Bean ์ด๋ฆ„์„ ์ฐธ์กฐํ•˜์—ฌ ์ฃผ์ž…   2. ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐฉ์‹ Spring ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์Šคํ…Œ๋ ˆ์˜คํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜ ์„ ์‚ฌ์šฉํ•˜์—ฌ Bean ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. !์ฝ”๋“œ๋‚ด์—์„œ ์„ค์ • ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์„ค์ •์ด ๊ฐ„๊ฒฐํ•˜๊ณ  ํŽธ๋ฆฌํ•ด์ง„๋‹ค. โ˜บ๏ธ * ์Šคํ…Œ๋ ˆ์˜คํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜ : Spring Framework์—์„œ ๋นˆ์„ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํŠน์ˆ˜ํ•œ ์ข…๋ฅ˜์˜ ์–ด๋…ธํ…Œ์ด์…˜  @Comp..

[Spring] request, response

//voidํ˜•์€ ๋“ค์–ด์˜จ ์š”์ฒญ ๊ฒฝ๋กœ๊ฐ€, ๋‚˜๊ฐ€๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค(ํ™”๋ฉด๊ฒฝ๋กœ) @RequestMapping("/req_ex01") public void ex01() { } @RequestMapping("/req_ex01") public String ex01() { return "request/req_ex01"; //ํ™”๋ฉด๊ฒฝ๋กœ }   //@RequestMapping(value = "/basic", method = RequestMethod.GET) //get๋งŒ ํ—ˆ์šฉํ•จ //@RequestMapping(value = "/basic", method = RequestMethod.POST) //post๋งŒ ํ—ˆ์šฉํ•จ //@RequestMapping("/basic") //get, post ๋‘˜๋‹ค ํ—ˆ์šฉํ•จ @Reques..

[Spring / ์‹ค์Šต1] ์ ์ˆ˜ ๋“ฑ๋ก ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ (์™„์„ฑโญ)

์ด๋ฆ„๊ณผ ์ ์ˆ˜๋ฅผ ์ž…๋ ฅํ•œ ํ›„  [์ ์ˆ˜ ๋“ฑ๋ก] ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.      ์ ์ˆ˜๊ฐ€ ์ž˜ ๋“ฑ๋ก๋˜์—ˆ๋‹ค๋Š” ํ™”๋ฉด์ด ๋œฌ๋‹ค.     [๋ชฉ๋กํŽ˜์ด์ง€] ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ด๋ ‡๊ฒŒ ๋“ฑ๋ก๋˜์–ด์žˆ๋Š” ํ‘œ๊ฐ€ ๋œจ๊ณ     [์ ์ˆ˜๋“ฑ๋ก] or [์ถ”๊ฐ€๋“ฑ๋กํ•˜๊ธฐ] ๋งํฌ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋‹ค์‹œ ๋“ฑ๋ก ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋„ ๊ฐ’์ด ์ž˜ ๋“ค์–ด์˜ด์„ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค!

[Spring / ์‹ค์Šต1] ์ ์ˆ˜ ๋“ฑ๋ก ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ (Service, Controller)

1) Service interface / Service impl ๋งŒ๋“ค๊ธฐ ๐Ÿ’€Service interfacemapper ์™€ ๋ฉ”์„œ๋“œ๋ช…์„ ํ†ต์ผ์‹œ์ผœ์ค€๋‹ค (์ผ๊ด€์„ฑ, ๊ฐ€๋…์„ฑ)package com.simple.basic.service.score;import java.util.ArrayList;import com.simple.basic.command.ScoreVO;public interface ScoreService { public void regist(ScoreVO vo); //๋“ฑ๋ก public ArrayList getScore(); //์กฐํšŒ public void delete(int sno); //์‚ญ์ œ}  ๐Ÿ’€Service implements@Service("x")์—์„œ "x"๋Š” ์ด ์„œ๋น„์Šค ๋นˆ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ์—ญํ• ..

[Spring / ์‹ค์Šต1] ์ ์ˆ˜ ๋“ฑ๋ก ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ (DB,VO,Mapper)

1) Oracle database :: TABLE ์ƒ์„ฑ CREATE TABLE SCORE( SNO NUMBER(10), NAME VARCHAR2(30), KOR VARCHAR2(30), ENG VARCHAR2(30), MATH VARCHAR2(30));ALTER TABLE SCORE ADD CONSTRAINT SCORE_SNO_PK PRIMARY KEY (SNO); -- PKCREATE SEQUENCE SCORE_SEQ NOCACHE; --์‹œํ€€์Šค   2) VO ๋งŒ๋“ค๊ธฐ ๋”๋ณด๊ธฐpackage com.simple.basic.command;public class ScoreVO { private int sno; private String name; private String kor; p..

[Spring / ์‹ค์Šต1] ์ ์ˆ˜ ๋“ฑ๋ก ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ (UI, ํ™”๋ฉด์ œ์ž‘)

1) ์ ์ˆ˜ ๋“ฑ๋ก ํŽ˜์ด์ง€์—์„œ ์ ์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜๋ฉด2) ๋“ฑ๋ก์ด ๋˜์—ˆ๋‹ค๋Š” ๊ฒฐ๊ณผ ํ™”๋ฉด์ด ๋œฌ๋‹ค. 3) ์ดํ›„ ๋ฆฌ์ŠคํŠธ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๋ฉด ๋“ฑ๋กํ•œ ์ ์ˆ˜๋ฅผ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.  1)  UI ์ œ์ž‘ ( jsp ํ™”๋ฉด ๊ตฌ์„ฑํ•˜๊ธฐ ) scoreRegist.jspscoreResult.jspscoreList.jsp  [code] scoreRegist.jsp๋”๋ณด๊ธฐ ์ด๋ฆ„: ๊ตญ์–ด: ์ˆ˜ํ•™: ์˜์–ด:   [code] scoreResult.jsp ๋”๋ณด๊ธฐ ์ ์ˆ˜ ๋“ฑ๋ก์ด ์ •์ƒ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๋ชฉ๋กํŽ˜์ด์ง€ ์ ์ˆ˜๋“ฑ๋ก   [code] scoreList.jsp ๋”๋ณด๊ธฐ ${a.index } ${vo.name } ${vo.kor } ${vo.eng } ${vo.math } ์‚ญ์ œ ์ถ”๊ฐ€๋“ฑ๋กํ•˜๊ธฐ

[Spring] WEB ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ :: 3๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜ (3tier)

์›น ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ 3Tier ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ๋œ๋‹ค.ํ™”๋ฉด | ๋น„์ง€๋‹ˆ์Šค | ๋ฐ์ดํ„ฐ ๋ถ„๋ฆฌ์˜ ๊ธฐ๋ถ„์€ `๋ณ„๋„์˜ ์„ค์ •์„ ๊ฐ€์ง€๋Š” ๋‹จ์œ„`์ด๋‹ค. ํ™”๋ฉด : JSP ๋‚˜ Spring MVC ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง : ๊ณ ๊ฐ์˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ณณ (xxxService ๋กœ ๋ช…๋ช…)๋ฐ์ดํ„ฐ : DB

[Spring] Persistence Layer ๊ตฌํ˜„ (Data Access)

์˜์† ๊ณ„์ธต(Persistence Layer)์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ณ„์ธต์„ ์˜๋ฏธ   โ—ˆ  vo ํด๋ž˜์Šค ์ž‘์„ฑํ…Œ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ vo ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•ด์ค€๋‹ค.  โ—ˆ  mapper ์ž‘์—… (interface , xml or @ ์ž‘์„ฑ)1) root-context.xml ์—์„œ ํŒจํ‚ค์ง€ ์Šค์บ”์„ ์„ค์ •ํ•ด์ค˜์•ผํ•œ๋‹ค. 2) xml ๋กœ ๊ตฌํ˜„ํ• ๊ฑด์ง€ @ ๋กœ ๊ตฌํ˜„ํ• ๊ฑด์ง€ ์„ ํƒํ•œ๋‹ค๊ฐ„๋‹จํ•œ sql ์€ @ ์ถ”์ฒœ   โ—ˆ  test ํด๋ž˜์Šค๋กœ DB ์ž‘๋™ ํ…Œ์ŠคํŠธ1) @Autowired ๋ฅผ ํ†ตํ•ด์„œ Mapper ์ธํ„ฐํŽ˜์ด์…˜์˜ ๊ตฌํ˜„์ฒด๋ฅผ ์ฃผ์ž…์‹œํ‚จ๋‹ค.2) SQL develop ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ or ๊ฒฐ๊ณผ ๊ฐ’ ์ฒดํ‚น  โ—ˆ xml or @ ์–ด๋…ธํ…Œ์ด์…˜ ์ž‘์„ฑ1) xml SELECT * FROM users WHERE..