@Controller
public class AdgameController {
SqlMapClientTemplate smct;
private MailSender mailSender;
public AdgameController(SqlMapClientTemplate smct,MailSender mailsender) { //생성자
this.smct = smct;
this.mailSender=mailsender;
}
@RequestMapping("/sendmail.html")
public void sendMail(HttpServletRequest req,HttpServletResponse res){
String title = req.getParameter("title");
String content = req.getParameter("content");
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom("보내는사람@이메일주소");
message.setSubject(title);
message.setText(content);
message.setTo("받는사람@이메일주소");
mailSender.send(message);
}
}
정말 심플하다.
2012년 11월 28일 수요일
Spring 메일보내기
간단하게 메일보내는 기능이 필요해서
간단하게만 작업했다.
javamail라이브러리를 찾아
mail.jar를 추가해주고,
servlet.xml에 아래와 같이 추가해준다.
true
true
8500
위와 같이 컨트롤러 생성자에 mailSender를 추가했다.
[ log4j ] 로그 기록하기
예전엔 보통 tomcat에 있는 log폴더에서 로그를 확인했지만,
로그의 중요성을 느끼고 log4j를 사용했다.
commons-logging.jar, log4j.jar를 라이브러리에 추가하고,
WEB-INF/web.xml에 아래 내용을 추가
org.springframework.web.util.Log4jConfigListener
log4jConfigLocation
/WEB-INF/log4j.properties
web.xml에 안에 추가한 값과 같이 임의의 파일을 만든다.
아래는 log4j.properties
# Configure logging for testing
log4j.rootLogger=WARN, stdout, dailyfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
# file
log4j.appender.dailyfile.Threshold = WARN
log4j.appender.dailyfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyfile.DatePattern='.'yyyy-MM-dd
log4j.appender.dailyfile.layout = org.apache.log4j.PatternLayout
#log4j.appender.dailyfile.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n
log4j.appender.dailyfile.File = 절대경로/logs/log.log
log4j.appender.dailyfile.Append=true
# iBatis
log4j.logger.java.sql.Connection=WARN
log4j.logger.java.sql.Statement=WARN
log4j.logger.java.sql.PreparedStatement=WARN
log4j.logger.java.sql.ResultSet=WARN
위처럼 간단하게 설정해준다.
2번라인의 WARN은 경고를
stdout은 console로 출력해주는 내용을
dailyfile은 매일 설정한 내용으로 로그를 쌓아주는 설정이다
컨트롤러에 전역변수로 선언 해주고,
private Logger log = Logger.getLogger(this.getClass());
try{
} catch (Exception e) {
log.error("Error:",e);
}
간단하게 쓸 수 있다.
2012년 11월 23일 금요일
Spring Scheduler 사용하기 (Quartz 대체기능)
몇 분마다
혹은
지정한 시각마다 지정한 함수를 호출하기위해 검색을 해보았지만,
Quartz라는 라이브러리는 예전 자료밖에 구할 수 없었다.
난 Spring 3.1버전을 사용중이라
예전 자료를 보고 해도 호환성이 안맞는지 전혀 될 생각이 없었다.
그래서 검색을 통해
Spring 기능 중에 Scheduler를 찾게 되었고,
구현방법이 굉장히 쉽고 심플했다.
나의 개발환경
jdk 1.6
spring 3.1
spring3 버전부터 어노테이션을 통한 스케쥴러 등록이 가능하다고 한다.
servlet.xml의
schema에
Controller.java에서 아래 내용 추가
난 매일 00시 05분마다 통계를 내야하는 기능이 필요하므로,
위와 같이 간단히 코딩하였다.
Quarts를 써보지 않아서 뭔지는 잘 모르겠지만,
Scheduler가 정말 편한 것 같다
아래는 http://dev.anyframejava.org/docs/anyframe/plugin/scheduling/4.5.3/reference/html/ch02.html의 예제내용..
혹은
지정한 시각마다 지정한 함수를 호출하기위해 검색을 해보았지만,
Quartz라는 라이브러리는 예전 자료밖에 구할 수 없었다.
난 Spring 3.1버전을 사용중이라
예전 자료를 보고 해도 호환성이 안맞는지 전혀 될 생각이 없었다.
그래서 검색을 통해
Spring 기능 중에 Scheduler를 찾게 되었고,
구현방법이 굉장히 쉽고 심플했다.
나의 개발환경
jdk 1.6
spring 3.1
spring3 버전부터 어노테이션을 통한 스케쥴러 등록이 가능하다고 한다.
servlet.xml의
schema에
xmlns:task="http://www.springframework.org/schema/task" //추가 xsi:schemaLocation="http://www.springframework.org/schema/task/spring-task-3.0.xsd" //추가<task:scheduler id="Scheduler" pool-size="10" /> <task:executor id="TaskExecutor" pool-size="10"/> <task:annotation-driven executor="TaskExecutor" scheduler="Scheduler"/> // <beans>태그 안에 추가
Controller.java에서 아래 내용 추가
@Scheduled(cron="0 5 0 * * *")//초 분 시 일 월 주(년)
Public void recordDailyStats(){
System.out.println("time to killing!!");
smct.insert("recordDailyStats");
}
//간단하게 annotation으로 추가할 수 있다..
난 매일 00시 05분마다 통계를 내야하는 기능이 필요하므로,
위와 같이 간단히 코딩하였다.
Quarts를 써보지 않아서 뭔지는 잘 모르겠지만,
Scheduler가 정말 편한 것 같다
아래는 http://dev.anyframejava.org/docs/anyframe/plugin/scheduling/4.5.3/reference/html/ch02.html의 예제내용..
@Scheduled(fixedDelay=5000)
public void printWithFixedDelay() {
System.out.println("execute printWithFixedDelay() of Annotated PrintTask at "
+ new Date());
}
@Scheduled(fixedRate=10000)
public void printWithFixedRate() {
System.out.println("execute printWithFixedRate() of Annotated PrintTask at "
+ new Date());
}
@Scheduled(cron="*/8 * * * * MON-FRI")
public void printWithCron() {
System.out.println("execute printWithCron() of Annotated PrintTask at "
+ new Date());
}
피드 구독하기:
글 (Atom)