You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@griffin.apache.org by gu...@apache.org on 2019/09/02 23:40:54 UTC
[griffin] branch master updated: [GRIFFIN-279] Upgrade Spring boot
to 2.1.7.RELEASE
This is an automated email from the ASF dual-hosted git repository.
guoyp pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/griffin.git
The following commit(s) were added to refs/heads/master by this push:
new 043dd8d [GRIFFIN-279] Upgrade Spring boot to 2.1.7.RELEASE
043dd8d is described below
commit 043dd8d24f958715f23198a269aeef9b5c1f95fb
Author: Johnnie <jo...@gmail.com>
AuthorDate: Tue Sep 3 07:40:33 2019 +0800
[GRIFFIN-279] Upgrade Spring boot to 2.1.7.RELEASE
As spring boot 1.x is end of life from Aug 1st 2019, it would be great to migrate to 2.1.x.
Below is the announcement
https://spring.io/blog/2018/07/30/spring-boot-1-x-eol-aug-1st-2019
Migrate Guide is
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide
Author: Johnnie <jo...@gmail.com>
Closes #528 from joohnnie/GRIFFIN-279.
---
.travis.yml | 2 +-
service/pom.xml | 36 +++++++++++++++++-----
.../griffin/core/job/BatchJobOperatorImpl.java | 4 ++-
.../org/apache/griffin/core/job/JobInstance.java | 2 ++
.../apache/griffin/core/job/JobServiceImpl.java | 8 +++--
.../griffin/core/job/StreamingJobOperatorImpl.java | 2 ++
.../repo/BaseJpaRepository.java} | 33 ++++++++++----------
.../griffin/core/job/repo/JobInstanceRepo.java | 14 ++++-----
.../org/apache/griffin/core/job/repo/JobRepo.java | 7 ++---
.../griffin/core/measure/MeasureOrgService.java | 4 +--
.../griffin/core/measure/repo/MeasureRepo.java | 13 ++++----
.../apache/griffin/core/job/JobInstanceTest.java | 1 -
.../griffin/core/job/SparkSubmitJobTest.java | 26 ++++++++--------
.../hive/HiveMetaStoreServiceImplTest.java | 3 +-
.../griffin/core/metric/MetricStoreImplTest.java | 4 +--
service/src/test/resources/application.properties | 8 +++--
16 files changed, 95 insertions(+), 72 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index bb195cf..5f21f27 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -31,7 +31,7 @@ git:
quiet: true
cache:
directories:
- - $HOME/.m2
+ - $HOME/.m2
install:
- npm install -g bower
diff --git a/service/pom.xml b/service/pom.xml
index 3c4ed80..37ff2d0 100644
--- a/service/pom.xml
+++ b/service/pom.xml
@@ -35,21 +35,20 @@ under the License.
<hadoop.version>2.7.1</hadoop.version>
<hive.version>2.2.0</hive.version>
<scala.version>2.10</scala.version>
- <spring.boot.version>1.5.1.RELEASE</spring.boot.version>
- <spring.security.kerberos.version>1.0.0.RELEASE</spring.security.kerberos.version>
+ <spring.boot.version>2.1.7.RELEASE</spring.boot.version>
+ <spring.security.kerberos.version>1.0.1.RELEASE</spring.security.kerberos.version>
<confluent.version>3.2.0</confluent.version>
<quartz.version>2.2.2</quartz.version>
<start-class>org.apache.griffin.core.GriffinWebApplication</start-class>
- <powermock.version>1.6.6</powermock.version>
- <mockito.version>1.10.19</mockito.version>
- <spring-boot-maven-plugin.version>1.5.1.RELEASE</spring-boot-maven-plugin.version>
+ <powermock.version>2.0.2</powermock.version>
+ <spring-boot-maven-plugin.version>2.1.7.RELEASE</spring-boot-maven-plugin.version>
<derby.version>10.14.1.0</derby.version>
<eclipselink.version>2.6.0</eclipselink.version>
<mysql.java.version>5.1.47</mysql.java.version>
<postgresql.version>9.4.1212.jre7</postgresql.version>
<livy.core.version>0.3.0</livy.core.version>
<elasticsearch-rest-client.version>6.2.4</elasticsearch-rest-client.version>
- <jackson-databind.version>2.6.3</jackson-databind.version>
+ <jackson-databind.version>2.9.9.3</jackson-databind.version>
</properties>
<repositories>
@@ -86,6 +85,23 @@ under the License.
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-properties-migrator</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>com.vaadin.external.google</groupId>
+ <artifactId>android-json</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-json</artifactId>
+ </dependency>
+
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
@@ -251,6 +267,12 @@ under the License.
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>com.vaadin.external.google</groupId>
+ <artifactId>android-json</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
@@ -260,7 +282,7 @@ under the License.
<dependency>
<groupId>org.powermock</groupId>
- <artifactId>powermock-api-mockito</artifactId>
+ <artifactId>powermock-api-mockito2</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
diff --git a/service/src/main/java/org/apache/griffin/core/job/BatchJobOperatorImpl.java b/service/src/main/java/org/apache/griffin/core/job/BatchJobOperatorImpl.java
index cdaa68c..03b7a8e 100644
--- a/service/src/main/java/org/apache/griffin/core/job/BatchJobOperatorImpl.java
+++ b/service/src/main/java/org/apache/griffin/core/job/BatchJobOperatorImpl.java
@@ -62,6 +62,7 @@ import org.quartz.TriggerKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -74,6 +75,7 @@ public class BatchJobOperatorImpl implements JobOperator {
.getLogger(BatchJobOperatorImpl.class);
@Autowired
+ @Qualifier("schedulerFactoryBean")
private SchedulerFactoryBean factory;
@Autowired
private JobInstanceRepo instanceRepo;
@@ -309,7 +311,7 @@ public class BatchJobOperatorImpl implements JobOperator {
boolean status = pauseJobInstance(instance, deletedInstances);
pauseStatus = pauseStatus && status;
}
- instanceRepo.save(deletedInstances);
+ instanceRepo.saveAll(deletedInstances);
return pauseStatus;
}
diff --git a/service/src/main/java/org/apache/griffin/core/job/JobInstance.java b/service/src/main/java/org/apache/griffin/core/job/JobInstance.java
index 3b0f768..3899147 100644
--- a/service/src/main/java/org/apache/griffin/core/job/JobInstance.java
+++ b/service/src/main/java/org/apache/griffin/core/job/JobInstance.java
@@ -70,6 +70,7 @@ import org.quartz.TriggerKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.env.Environment;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.transaction.annotation.Transactional;
@@ -91,6 +92,7 @@ public class JobInstance implements Job {
"checkdonefile.schedule";
@Autowired
+ @Qualifier("schedulerFactoryBean")
private SchedulerFactoryBean factory;
@Autowired
private GriffinMeasureRepo measureRepo;
diff --git a/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java b/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java
index f41eb2a..77fbec3 100644
--- a/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java
+++ b/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java
@@ -91,6 +91,7 @@ import org.quartz.TriggerKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.env.Environment;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
@@ -113,6 +114,7 @@ public class JobServiceImpl implements JobService {
static final String STOP = "stop";
@Autowired
+ @Qualifier("schedulerFactoryBean")
private SchedulerFactoryBean factory;
@Autowired
private JobInstanceRepo instanceRepo;
@@ -685,9 +687,9 @@ public class JobServiceImpl implements JobService {
JobKey jobKey = jobKey(job.getName(), job.getGroup());
if (scheduler.checkExists(jobKey)) {
Trigger trigger = TriggerBuilder.newTrigger()
- .forJob(jobKey)
- .startNow()
- .build();
+ .forJob(jobKey)
+ .startNow()
+ .build();
scheduler.scheduleJob(trigger);
return trigger.getKey().toString();
} else {
diff --git a/service/src/main/java/org/apache/griffin/core/job/StreamingJobOperatorImpl.java b/service/src/main/java/org/apache/griffin/core/job/StreamingJobOperatorImpl.java
index e3fab06..9814542 100644
--- a/service/src/main/java/org/apache/griffin/core/job/StreamingJobOperatorImpl.java
+++ b/service/src/main/java/org/apache/griffin/core/job/StreamingJobOperatorImpl.java
@@ -49,6 +49,7 @@ import org.quartz.TriggerKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.env.Environment;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.stereotype.Service;
@@ -70,6 +71,7 @@ public class StreamingJobOperatorImpl implements JobOperator {
@Autowired
private JobInstanceRepo instanceRepo;
@Autowired
+ @Qualifier("schedulerFactoryBean")
private SchedulerFactoryBean factory;
@Autowired
private LivyTaskSubmitHelper livyTaskSubmitHelper;
diff --git a/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgService.java b/service/src/main/java/org/apache/griffin/core/job/repo/BaseJpaRepository.java
similarity index 58%
copy from service/src/main/java/org/apache/griffin/core/measure/MeasureOrgService.java
copy to service/src/main/java/org/apache/griffin/core/job/repo/BaseJpaRepository.java
index 4801ec2..5985705 100644
--- a/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgService.java
+++ b/service/src/main/java/org/apache/griffin/core/job/repo/BaseJpaRepository.java
@@ -17,21 +17,20 @@ specific language governing permissions and limitations
under the License.
*/
-package org.apache.griffin.core.measure;
-
-import java.util.List;
-import java.util.Map;
-
-public interface MeasureOrgService {
-
- List<String> getOrgs();
-
- List<String> getMetricNameListByOrg(String org);
-
- Map<String, List<String>> getMeasureNamesGroupByOrg();
-
- Map<String, Map<String, List<Map<String, Object>>>>
- getMeasureWithJobDetailsGroupByOrg(Map<String,
- List<Map<String, Object>>>
- jobDetailsGroupByMeasure);
+package org.apache.griffin.core.job.repo;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.NoRepositoryBean;
+
+@NoRepositoryBean
+public interface BaseJpaRepository<T, ID> extends JpaRepository<T, ID> {
+ /**
+ * This method is to make findOne method from spring boot 1.5.x compatible with spring 2.x
+ *
+ * @param id id
+ * @return object of specified id, return null if cannot find the id
+ */
+ default T findOne(ID id) {
+ return (T) findById(id).orElse(null);
+ }
}
diff --git a/service/src/main/java/org/apache/griffin/core/job/repo/JobInstanceRepo.java b/service/src/main/java/org/apache/griffin/core/job/repo/JobInstanceRepo.java
index 4db291d..e6978de 100644
--- a/service/src/main/java/org/apache/griffin/core/job/repo/JobInstanceRepo.java
+++ b/service/src/main/java/org/apache/griffin/core/job/repo/JobInstanceRepo.java
@@ -18,19 +18,17 @@ under the License.
*/
package org.apache.griffin.core.job.repo;
-import static org.apache.griffin.core.job.entity.LivySessionStates.State;
-
-import java.util.List;
-
import org.apache.griffin.core.job.entity.JobInstanceBean;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.CrudRepository;
import org.springframework.transaction.annotation.Transactional;
-public interface JobInstanceRepo
- extends CrudRepository<JobInstanceBean, Long> {
+import java.util.List;
+
+import static org.apache.griffin.core.job.entity.LivySessionStates.State;
+
+public interface JobInstanceRepo extends BaseJpaRepository<JobInstanceBean, Long> {
JobInstanceBean findByPredicateName(String name);
@@ -48,7 +46,7 @@ public interface JobInstanceRepo
@Transactional(rollbackFor = Exception.class)
@Modifying
@Query("delete from JobInstanceBean j " +
- "where j.expireTms <= ?1 and j.deleted = false ")
+ "where j.expireTms <= ?1 and j.deleted = false ")
int deleteByExpireTimestamp(Long expireTms);
@Query("select DISTINCT s from JobInstanceBean s where s.state in ?1")
diff --git a/service/src/main/java/org/apache/griffin/core/job/repo/JobRepo.java b/service/src/main/java/org/apache/griffin/core/job/repo/JobRepo.java
index a9bfbe2..7b8a36e 100644
--- a/service/src/main/java/org/apache/griffin/core/job/repo/JobRepo.java
+++ b/service/src/main/java/org/apache/griffin/core/job/repo/JobRepo.java
@@ -19,13 +19,12 @@ under the License.
package org.apache.griffin.core.job.repo;
-import java.util.List;
-
import org.apache.griffin.core.job.entity.AbstractJob;
import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.CrudRepository;
-public interface JobRepo<T extends AbstractJob> extends CrudRepository<T, Long> {
+import java.util.List;
+
+public interface JobRepo<T extends AbstractJob> extends BaseJpaRepository<T, Long> {
@Query("select count(j) from #{#entityName} j " +
"where j.jobName = ?1 and j.deleted = ?2")
diff --git a/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgService.java b/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgService.java
index 4801ec2..2554ae5 100644
--- a/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgService.java
+++ b/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgService.java
@@ -31,7 +31,5 @@ public interface MeasureOrgService {
Map<String, List<String>> getMeasureNamesGroupByOrg();
Map<String, Map<String, List<Map<String, Object>>>>
- getMeasureWithJobDetailsGroupByOrg(Map<String,
- List<Map<String, Object>>>
- jobDetailsGroupByMeasure);
+ getMeasureWithJobDetailsGroupByOrg(Map<String, List<Map<String, Object>>> jobDetailsGroupByMeasure);
}
diff --git a/service/src/main/java/org/apache/griffin/core/measure/repo/MeasureRepo.java b/service/src/main/java/org/apache/griffin/core/measure/repo/MeasureRepo.java
index a96415c..498fb61 100644
--- a/service/src/main/java/org/apache/griffin/core/measure/repo/MeasureRepo.java
+++ b/service/src/main/java/org/apache/griffin/core/measure/repo/MeasureRepo.java
@@ -20,19 +20,18 @@ under the License.
package org.apache.griffin.core.measure.repo;
-import java.util.List;
-
+import org.apache.griffin.core.job.repo.BaseJpaRepository;
import org.apache.griffin.core.measure.entity.Measure;
import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.CrudRepository;
+
+import java.util.List;
/**
* Interface to access measure repository
*
* @param <T> Measure and its subclass
*/
-public interface MeasureRepo<T extends Measure>
- extends CrudRepository<T, Long> {
+public interface MeasureRepo<T extends Measure> extends BaseJpaRepository<T, Long> {
/**
* search repository by name and deletion state
@@ -76,7 +75,7 @@ public interface MeasureRepo<T extends Measure>
* @return organization collection
*/
@Query("select DISTINCT m.organization from #{#entityName} m "
- + "where m.deleted = ?1 and m.organization is not null")
+ + "where m.deleted = ?1 and m.organization is not null")
List<String> findOrganizations(Boolean deleted);
/**
@@ -87,6 +86,6 @@ public interface MeasureRepo<T extends Measure>
* @return organization collection
*/
@Query("select m.name from #{#entityName} m "
- + "where m.organization= ?1 and m.deleted= ?2")
+ + "where m.organization= ?1 and m.deleted= ?2")
List<String> findNameByOrganization(String organization, Boolean deleted);
}
diff --git a/service/src/test/java/org/apache/griffin/core/job/JobInstanceTest.java b/service/src/test/java/org/apache/griffin/core/job/JobInstanceTest.java
index af74600..0556305 100644
--- a/service/src/test/java/org/apache/griffin/core/job/JobInstanceTest.java
+++ b/service/src/test/java/org/apache/griffin/core/job/JobInstanceTest.java
@@ -52,7 +52,6 @@ import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.Trigger;
import org.quartz.TriggerKey;
-import org.quartz.impl.triggers.AbstractTrigger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.TestConfiguration;
diff --git a/service/src/test/java/org/apache/griffin/core/job/SparkSubmitJobTest.java b/service/src/test/java/org/apache/griffin/core/job/SparkSubmitJobTest.java
index 543432e..12bba88 100644
--- a/service/src/test/java/org/apache/griffin/core/job/SparkSubmitJobTest.java
+++ b/service/src/test/java/org/apache/griffin/core/job/SparkSubmitJobTest.java
@@ -19,16 +19,6 @@ under the License.
package org.apache.griffin.core.job;
-import static org.apache.griffin.core.util.EntityMocksHelper.*;
-import static org.mockito.BDDMockito.given;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Properties;
-
import org.apache.griffin.core.config.PropertiesConfig;
import org.apache.griffin.core.job.entity.JobInstanceBean;
import org.apache.griffin.core.job.entity.SegmentPredicate;
@@ -40,7 +30,6 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Matchers;
-import org.mockito.internal.util.reflection.Whitebox;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
@@ -51,6 +40,18 @@ import org.springframework.core.io.ClassPathResource;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.client.RestTemplate;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Properties;
+
+import static org.apache.griffin.core.util.EntityMocksHelper.*;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+
+
@RunWith(SpringRunner.class)
public class SparkSubmitJobTest {
@@ -150,9 +151,6 @@ public class SparkSubmitJobTest {
given(context.getJobDetail()).willReturn(jd);
given(jobInstanceRepo.findByPredicateName(Matchers.anyString()))
.willReturn(instance);
-// Whitebox.setInternalState(sparkSubmitJob, "restTemplate", restTemplate);
-// given(restTemplate.postForObject(Matchers.anyString(), Matchers.any(),
-// Matchers.any())).willReturn(result);
sparkSubmitJob.execute(context);
diff --git a/service/src/test/java/org/apache/griffin/core/metastore/hive/HiveMetaStoreServiceImplTest.java b/service/src/test/java/org/apache/griffin/core/metastore/hive/HiveMetaStoreServiceImplTest.java
index 113ebf2..f924e9a 100644
--- a/service/src/test/java/org/apache/griffin/core/metastore/hive/HiveMetaStoreServiceImplTest.java
+++ b/service/src/test/java/org/apache/griffin/core/metastore/hive/HiveMetaStoreServiceImplTest.java
@@ -22,6 +22,7 @@ package org.apache.griffin.core.metastore.hive;
import org.apache.griffin.core.config.CacheConfig;
import org.apache.hadoop.hive.metastore.HiveMetaStoreClient;
import org.apache.hadoop.hive.metastore.api.MetaException;
+import org.apache.hadoop.hive.metastore.api.NoSuchObjectException;
import org.apache.hadoop.hive.metastore.api.Table;
import org.apache.thrift.TException;
import org.junit.Before;
@@ -186,7 +187,7 @@ public class HiveMetaStoreServiceImplTest {
public void testGetTableForException() throws Exception {
String dbName = "default";
String tableName = "tableName";
- given(client.getTable(dbName, tableName)).willThrow(Exception.class);
+ given(client.getTable(dbName, tableName)).willThrow(NoSuchObjectException.class);
doNothing().when(client).reconnect();
assertTrue(service.getTable(dbName, tableName) == null);
verify(client).reconnect();
diff --git a/service/src/test/java/org/apache/griffin/core/metric/MetricStoreImplTest.java b/service/src/test/java/org/apache/griffin/core/metric/MetricStoreImplTest.java
index b91f6ba..496723b 100644
--- a/service/src/test/java/org/apache/griffin/core/metric/MetricStoreImplTest.java
+++ b/service/src/test/java/org/apache/griffin/core/metric/MetricStoreImplTest.java
@@ -107,11 +107,11 @@ public class MetricStoreImplTest {
given(httpEntityMock.getContent()).willReturn(is);
//when
- MetricStoreImpl metricStore = new MetricStoreImpl("", 0, "", "", "");
+ MetricStoreImpl metricStore = new MetricStoreImpl("localhost", 0, "", "", "");
MetricValue metric = metricStore.getMetric("application_1549876136110_0018");
//then
- PowerMockito.verifyStatic();
+ //PowerMockito.verifyStatic();
assertEquals(expectedMetric, metric);
}
diff --git a/service/src/test/resources/application.properties b/service/src/test/resources/application.properties
index a9c6c6e..81da26e 100644
--- a/service/src/test/resources/application.properties
+++ b/service/src/test/resources/application.properties
@@ -44,8 +44,8 @@ predicate.job.repeat.count=12
external.config.location=
# external BATCH or STREAMING env
external.env.location=
-# login strategy ("test" or "ldap")
-login.strategy=test
+# login strategy ("default" or "ldap")
+login.strategy=default
# ldap
ldap.url=ldap://hostname:port
ldap.email=@example.com
@@ -72,4 +72,6 @@ yarn.uri=http://localhost:38088
# griffin event listener
internal.event.listeners=GriffinJobEventHook,GriffinTestJobEventHook
-logging.file=logs/griffin-service.log
\ No newline at end of file
+logging.file=logs/griffin-service.log
+
+spring.main.allow-bean-definition-overriding=true
\ No newline at end of file