๐Ÿ“† Today I Learned(๊ฐœ๋ฐœ์–ธ์–ดํ•™์Šต)/SPRING

[์ „์ž์ •๋ถ€ํ”„๋ ˆ์ž„์›Œํฌ] ์Šค์ผ€์ค„๋ง

1) MAVEN ํ™œ์šฉ ์‹œ (pom.xml)

        <!-- Quartz Scheduler 2023-11-30 -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.1.7</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

		<dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz-jobs</artifactId>
            <version>2.2.1</version>
        </dependency>

 

* maven์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ WEB-INF/lib์— ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

2) context-quartz.xml ์ƒ์„ฑ( ๊ฒฝ๋กœ ๋ฐ ํŒŒ์ผ๋ช…์€ web.xml ์„ค์ •ํŒŒ์ผ ์ฐธ์กฐํ•˜์—ฌ ์ƒ์„ฑ )

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">

	<!-- Spring Quartz -->
	<!--
	 	Job : ์ˆ˜ํ–‰ํ•  ์ž‘์—…
	 	targetObject : Component๊ฐ’<service๋ช…>
	 	targetMethod : ์Šค์ผ€์ค„๋งํ•  ์ž‘์—…<service๋‚ด์˜ method๋ช…>
	 	Concurrent : ๋™์‹œ์ž‘์—… ์—ฌ๋ถ€
	 -->
	<bean id="removeBbsExpDelQuartz" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
	    <property name="targetObject" ref="quartz" />
	    <property name="targetMethod" value="bbsExpDelQuery" />
	    <property name="concurrent" value="false" />
	</bean>
	
	<bean id="insertBbsBodoQuartz" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
	    <property name="targetObject" ref="quartz" />
	    <property name="targetMethod" value="bbsBodoAutoInsert" />
	    <property name="concurrent" value="false" />
	</bean>
	
	 
	<!-- 
		Trigger : job์„ ์‹คํ–‰์‹œํ‚ฌ ์กฐ๊ฑด
		jobDetail : ์‹คํ–‰์‹œํ‚ฌ job
		cronExpression : ์‹คํ–‰์กฐ๊ฑด
	 -->

	<bean id="removeBbsExpDelTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
	    <property name="jobDetail" ref="removeBbsExpDelQuartz" />
		<property name="cronExpression" value="*/30 * * * * ?" />
	</bean>
	
	<bean id="insertBbsBodoTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
	    <property name="jobDetail" ref="insertBbsBodoQuartz" />
		<property name="cronExpression" value="0 */5 * * * ?" />
	</bean>
<!-- 	    <property name="cronExpression" value="30 39 10 * * ?" /> -->
	
	<!-- Scheduler : ์ˆ˜ํ–‰ํ•  trigger ๋ชฉ๋ก-->
	<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
	    <property name="triggers">
	        <list>
	            <ref bean="removeBbsExpDelTrigger" />
	            <ref bean="insertBbsBodoTrigger" />
	        </list>
	    </property>
	</bean>
	
</beans>

 

์Šค์ผ€์ค„๋Ÿฌ์—์„œ ํ™œ์šฉ๋  service, serviceImpl, dao, vo, xml ๋“ฑ๋“ฑ์˜ ๊ฐ์ฒด์ƒ์„ฑ

  • ์‹ค์ œ๋กœ ์ƒ์„ฑ๋˜์–ด ์‹คํ–‰๋  ๋ฉ”์†Œ๋“œ๋ฅผ ๋“ค๊ณ ์žˆ๋Š” ํด๋ž˜์Šค์—๋Š” @service("quartz")๋ฅผ ์„ ์–ธํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

 

 

 

 

 

 

 

 

 

 

์ฐธ๊ณ  : https://egovframe.go.kr/wiki/doku.php?id=egovframework:rte:fdl:scheduling

'๐Ÿ“† Today I Learned(๊ฐœ๋ฐœ์–ธ์–ดํ•™์Šต) > SPRING' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[SPRING] Spring Framework๋ž€?  (0) 2022.03.22