Spring AOP
핵심기능(비즈로직)과 부가기능(로깅, 모니터링, 트랜잭션, 캐싱...)으로 나누는 디자인 방식
Spring은 비즈니스 로직에 집중할 수 있도록 그래서 생산성을 높일 수 있는 방향으로 진화 하고 있습니다.
•
모든 페이지에서 전역적으로 사용하는것
•
ex) 회원 권한, 로깅 등등
•
공통된것을 뺀다는 것은 객체지향에 알맞는 기능
controller : 받아오기만 하는것 → 맵핑해주는 역할이 크다, 정보를 받아오기 받아준다.
service : 핵심적인 비즈니스로직
dao : db와 교류를 하는것, 우리가 만든 UserDao같은것
controller 예시
@PostMapping("findPW")
public String findPWPost(@ModelAttribute UserVo userVo) throws Exception {
String result = userService.findPw(userVo);
if (result.equals("success")) {
return "redirect:./login";
} else {
return "redirect:./";
}
Java
복사
위의 코드와 같이 controller는 받아온 정보를 저장하고 맵핑만 해줄 뿐 핵심적인 로직은 userService.findPw를 호출해 하는것이다.
service 예시
public void sendEmail(UserVo userVo, String div) throws Exception {
// Mail Server 설정
String charSet = "utf-8";
String hostSMTP = "smtp.gmail.com"; //구글 이용시 smtp.gmail.com 네이버 이용시 smtp.naver.com
String hostSMTPid = "lunchwb@gmail.com";
String hostSMTPpwd = "gnzwzjrgdidbwxjm";
// 보내는 사람 EMail, 제목, 내용
String fromEmail = "lunchwb@gmail.com";
String fromName = "부장님요기요";
String subject = "부장님 요기요 임시 비밀번호 입니다.";
String msg = "";
if(div.equals("findpw")) {
subject = "부장님요기요 임시 비밀번호 입니다.";
msg += "<div align='center' style='border:1px solid black; font-family:verdana'>";
msg += "<h3 style='color: blue;'>";
msg += userVo.getUserEmail() + "님의 임시 비밀번호 입니다. 비밀번호를 변경하여 사용하세요.</h3>";
msg += "<p>임시 비밀번호 : ";
msg += userVo.getUserPassword() + "</p></div>";
}
// 받는 사람 E-Mail 주소
String mail = userVo.getUserEmail();
try {
HtmlEmail email = new HtmlEmail();
email.setDebug(true);
email.setCharset(charSet);
email.setSSLOnConnect(true);
email.setHostName(hostSMTP);
email.setSmtpPort(465); //네이버 이용시 587 구글 이용시 465
email.setAuthentication(hostSMTPid, hostSMTPpwd);
email.setStartTLSEnabled(true);
email.addTo(mail, charSet);
email.setFrom(fromEmail, fromName, charSet);
email.setSubject(subject);
email.setHtmlMsg(msg);
email.send();
} catch (Exception e) {
System.out.println("메일발송 실패 : " + e);
}
}
Java
복사
비즈니스 로직을 해결하는 부분이다.
Maven ,Gradle 차이점
gradle이 훨씬 깔끔하다
Gradle이 버전관리를 굳이 할 필요가 없다.
Maven이 먼저나왔다.
Gradle은 작업 의존성 그래프를 기반으로하는 반면 Maven은 고정적이고 선형적인 단계의 모델을 기반으로한다고 한다.