This is an automated email from the ASF dual-hosted git repository.
karp pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/rocketmq-schema-registry.git
The following commit(s) were added to refs/heads/main by this push:
new 0ce6bbc Optimize code before 1.0-release (#56)
0ce6bbc is described below
commit 0ce6bbc49bfc41001e75d235b60c2fbfecf04107
Author: HuiTong <[email protected]>
AuthorDate: Thu Sep 8 15:35:00 2022 +0800
Optimize code before 1.0-release (#56)
* optimize code
* optimize code
* simplify the dependency of client module
---
README.md | 2 +-
client/pom.xml | 22 ++++
common/pom.xml | 66 +++++++++-
.../auth/DefaultAccessControlServiceImpl.java | 1 -
.../registry/common/filter/RequestFilter.java | 6 +-
.../core/compatibility/AvroSchemaValidator.java | 2 +-
.../registry/core/service/SchemaServiceImpl.java | 31 ++---
pom.xml | 140 +++++++++++----------
storage-rocketmq/pom.xml | 5 +
.../registry/storage/rocketmq/RocketmqClient.java | 3 +-
.../storage/rocketmq/RocketmqStorageUtils.java | 5 -
.../rocketmq/configs/RocketmqConfigConstants.java | 6 +-
war/pom.xml | 20 +++
13 files changed, 198 insertions(+), 111 deletions(-)
diff --git a/README.md b/README.md
index c88ad59..f2fcd2d 100644
--- a/README.md
+++ b/README.md
@@ -75,7 +75,7 @@ Properties details:
| Property | Description
|
|-----------------------------------------|----------------------------------------------------------------------------|
-| schema.dependency.jdk-path | The JDK used when compiling Java
files |
+| schema.dependency.jdk-path | The JDK used when compiling Java
files, equal to JAVA_HOME in your server | |
| schema.dependency.compile-path | The root directory used when
compiling Java files |
| schema.dependency.local-repository-path | The local cache directory for the
Jar package |
| schema.dependency.repository-url | The remote repository access url,
multiple repository cannot be configured |
diff --git a/client/pom.xml b/client/pom.xml
index 67b6c41..715dbbf 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -32,6 +32,28 @@
<artifactId>schema-registry-common</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-actuator</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-boot-starter</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
</dependencies>
diff --git a/common/pom.xml b/common/pom.xml
index a797ad3..b31d681 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -38,16 +38,74 @@
<dependencies>
<dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>2.9.0</version>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <type>pom</type>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-actuator</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjweaver</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-boot-starter</artifactId>
</dependency>
+
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
- <version>1.18.24</version>
<scope>compile</scope>
</dependency>
+
+ <dependency>
+ <groupId>com.google.code.findbugs</groupId>
+ <artifactId>annotations</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>net.sf.dozer</groupId>
+ <artifactId>dozer</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>slf4j-log4j12</artifactId>
+ <groupId>org.slf4j</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.9.0</version>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git
a/common/src/main/java/org/apache/rocketmq/schema/registry/common/auth/DefaultAccessControlServiceImpl.java
b/common/src/main/java/org/apache/rocketmq/schema/registry/common/auth/DefaultAccessControlServiceImpl.java
index 630956f..5975c15 100644
---
a/common/src/main/java/org/apache/rocketmq/schema/registry/common/auth/DefaultAccessControlServiceImpl.java
+++
b/common/src/main/java/org/apache/rocketmq/schema/registry/common/auth/DefaultAccessControlServiceImpl.java
@@ -54,7 +54,6 @@ public class DefaultAccessControlServiceImpl implements
AccessControlService {
final SchemaOperation operation
) {
final Set<String> users = null;
-// accessACL.get(QualifiedName.ofDatabase(name.getCatalogName(),
name.getDatabaseName()));
if ((users != null) && !users.isEmpty() && !users.contains(userName)) {
throw new SchemaAuthorizedException(String.format("%s is not
permitted for %s %s", userName, operation.name(), name));
}
diff --git
a/common/src/main/java/org/apache/rocketmq/schema/registry/common/filter/RequestFilter.java
b/common/src/main/java/org/apache/rocketmq/schema/registry/common/filter/RequestFilter.java
index 658ec50..6e054c1 100644
---
a/common/src/main/java/org/apache/rocketmq/schema/registry/common/filter/RequestFilter.java
+++
b/common/src/main/java/org/apache/rocketmq/schema/registry/common/filter/RequestFilter.java
@@ -61,11 +61,7 @@ public class RequestFilter implements Filter {
final String method = httpServletRequest.getMethod();
// TODO: get request Authorization from http header
-// final String requestAuth =
-//
httpServletRequest.getHeader(RequestContext.MICOMPUTE_REQUEST_HEADER_AUTHORIZATION);
-// final String metaAccount = StringUtils.isNotBlank(requestAuth)
-// ? requestAuth.replaceAll("@<", "\\{").replaceAll("@>", "\\}")
-// : requestAuth;
+
final RequestContext context = RequestContext.builder().build();
RequestContextManager.putContext(context);
log.info("filter " + context.toString());
diff --git
a/core/src/main/java/org/apache/rocketmq/schema/registry/core/compatibility/AvroSchemaValidator.java
b/core/src/main/java/org/apache/rocketmq/schema/registry/core/compatibility/AvroSchemaValidator.java
index 73931c2..0924d75 100644
---
a/core/src/main/java/org/apache/rocketmq/schema/registry/core/compatibility/AvroSchemaValidator.java
+++
b/core/src/main/java/org/apache/rocketmq/schema/registry/core/compatibility/AvroSchemaValidator.java
@@ -63,7 +63,7 @@ public class AvroSchemaValidator implements
org.apache.rocketmq.schema.registry.
for (String schemaIdl : current.getAllRecordIdlInOrder()) {
Schema existing = new Schema.Parser().parse(schemaIdl);
if (existing.equals(toValidate)) {
- throw new SchemaCompatibilityException("Schema record: " +
schemaIdl + " is exist.");
+ throw new SchemaCompatibilityException("The same schemaIdl
exists in the previous versions");
}
existingList.add(existing);
}
diff --git
a/core/src/main/java/org/apache/rocketmq/schema/registry/core/service/SchemaServiceImpl.java
b/core/src/main/java/org/apache/rocketmq/schema/registry/core/service/SchemaServiceImpl.java
index f35e8cb..f169a84 100644
---
a/core/src/main/java/org/apache/rocketmq/schema/registry/core/service/SchemaServiceImpl.java
+++
b/core/src/main/java/org/apache/rocketmq/schema/registry/core/service/SchemaServiceImpl.java
@@ -17,7 +17,6 @@
package org.apache.rocketmq.schema.registry.core.service;
-import com.google.common.base.Strings;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -34,7 +33,6 @@ import
org.apache.rocketmq.schema.registry.common.dto.SchemaDto;
import org.apache.rocketmq.schema.registry.common.dto.SchemaRecordDto;
import org.apache.rocketmq.schema.registry.common.dto.UpdateSchemaRequest;
import org.apache.rocketmq.schema.registry.common.dto.UpdateSchemaResponse;
-import
org.apache.rocketmq.schema.registry.common.exception.SchemaCompatibilityException;
import org.apache.rocketmq.schema.registry.common.exception.SchemaException;
import
org.apache.rocketmq.schema.registry.common.exception.SchemaExistException;
import
org.apache.rocketmq.schema.registry.common.exception.SchemaNotFoundException;
@@ -226,7 +224,7 @@ public class SchemaServiceImpl implements
SchemaService<SchemaDto> {
@Override
public SchemaDto get(QualifiedName qualifiedName) {
final RequestContext requestContext =
RequestContextManager.getContext();
- log.info("register get request context: " + requestContext);
+ log.debug("register get request context: " + requestContext);
CommonUtil.validateName(qualifiedName);
@@ -237,7 +235,7 @@ public class SchemaServiceImpl implements
SchemaService<SchemaDto> {
throw new SchemaNotFoundException(qualifiedName);
}
- log.info("get schema {}", qualifiedName);
+ log.debug("get schema {}", qualifiedName);
return storageUtil.convertToSchemaDto(schemaInfo);
}
@@ -247,7 +245,7 @@ public class SchemaServiceImpl implements
SchemaService<SchemaDto> {
@Override
public GetSchemaResponse getBySubject(QualifiedName qualifiedName) {
final RequestContext requestContext =
RequestContextManager.getContext();
- log.info("register get request context: " + requestContext);
+ log.debug("register get request context: " + requestContext);
this.accessController.checkPermission("", qualifiedName.getSubject(),
SchemaOperation.GET);
@@ -256,14 +254,14 @@ public class SchemaServiceImpl implements
SchemaService<SchemaDto> {
throw new SchemaException("Schema: " + qualifiedName.toString() +
" not exist");
}
- log.info("get schema by subject: {}", qualifiedName.getSubject());
+ log.debug("get schema by subject: {}", qualifiedName.getSubject());
return new GetSchemaResponse(qualifiedName, recordInfo);
}
@Override
public List<SchemaRecordDto> listBySubject(QualifiedName qualifiedName) {
final RequestContext requestContext =
RequestContextManager.getContext();
- log.info("register get request context: " + requestContext);
+ log.debug("register get request context: " + requestContext);
this.accessController.checkPermission("", qualifiedName.getSubject(),
SchemaOperation.GET);
@@ -272,19 +270,20 @@ public class SchemaServiceImpl implements
SchemaService<SchemaDto> {
throw new SchemaException("Schema: " + qualifiedName.toString() +
" not exist");
}
- log.info("list schema by subject: {}", qualifiedName.getSubject());
+ log.debug("list schema by subject: {}", qualifiedName.getSubject());
return
recordInfos.stream().map(storageUtil::convertToSchemaRecordDto).collect(Collectors.toList());
}
+ @Override
public List<String> listSubjectsByTenant(QualifiedName qualifiedName) {
final RequestContext requestContext =
RequestContextManager.getContext();
- log.info("get request context: " + requestContext);
+ log.debug("get request context: " + requestContext);
this.accessController.checkPermission("", qualifiedName.getTenant(),
SchemaOperation.GET);
List<String> subjects =
storageServiceProxy.listSubjectsByTenant(qualifiedName);
- log.info("list subjects by tenant: {}", qualifiedName.getTenant());
+ log.debug("list subjects by tenant: {}", qualifiedName.getTenant());
return subjects;
}
@@ -294,16 +293,4 @@ public class SchemaServiceImpl implements
SchemaService<SchemaDto> {
}
}
- private void checkSchemaValid(final SchemaDto schemaDto) {
- CommonUtil.validateName(schemaDto.getQualifiedName());
-
- // TODO: check and set namespace from idl
- if (Strings.isNullOrEmpty(schemaDto.getMeta().getNamespace())) {
- throw new SchemaCompatibilityException("Schema namespace is null,
please check your config.");
- }
-
- if (schemaDto.getDetails().getSchemaRecords().size() > 1) {
- throw new SchemaCompatibilityException("Can not register schema
with multi records.");
- }
- }
}
diff --git a/pom.xml b/pom.xml
index 50ae8a9..cd8a0b3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -300,87 +300,91 @@
</profile>
</profiles>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>${spring-boot.version}</version>
- <type>pom</type>
- <scope>compile</scope>
- </dependency>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <version>${spring-boot.version}</version>
+ <type>pom</type>
+ <scope>compile</scope>
+ </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter</artifactId>
- <version>${spring-boot.version}</version>
- </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter</artifactId>
+ <version>${spring-boot.version}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <version>${spring-boot.version}</version>
- <scope>test</scope>
- </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <version>${spring-boot.version}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <version>${spring-boot.version}</version>
- </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-actuator</artifactId>
+ <version>${spring-boot.version}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- <version>${spring-boot.version}</version>
- </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjweaver</artifactId>
+ <version>${aspectj.weaver.version}</version>
+ </dependency>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>${aspectj.weaver.version}</version>
- </dependency>
+ <dependency>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-boot-starter</artifactId>
+ <version>${springfox.version}</version>
+ </dependency>
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-boot-starter</artifactId>
- <version>${springfox.version}</version>
- </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>${lombok.version}</version>
+ <scope>compile</scope>
+ </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <version>${lombok.version}</version>
- <scope>compile</scope>
- </dependency>
+ <dependency>
+ <groupId>com.google.code.findbugs</groupId>
+ <artifactId>annotations</artifactId>
+ <version>${google.annotations.version}</version>
+ </dependency>
- <dependency>
- <groupId>com.google.code.findbugs</groupId>
- <artifactId>annotations</artifactId>
- <version>${google.annotations.version}</version>
- </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>${google.guava.version}</version>
+ </dependency>
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- <version>${google.guava.version}</version>
- </dependency>
+ <dependency>
+ <groupId>net.sf.dozer</groupId>
+ <artifactId>dozer</artifactId>
+ <version>${dozer.version}</version>
+ </dependency>
- <dependency>
- <groupId>net.sf.dozer</groupId>
- <artifactId>dozer</artifactId>
- <version>${dozer.version}</version>
- </dependency>
+ <dependency>
+ <groupId>org.rocksdb</groupId>
+ <artifactId>rocksdbjni</artifactId>
+ <version>${rocksdb.version}</version>
+ </dependency>
- <dependency>
- <groupId>org.rocksdb</groupId>
- <artifactId>rocksdbjni</artifactId>
- <version>${rocksdb.version}</version>
- </dependency>
+ <dependency>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro</artifactId>
+ <version>${avro.version}</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+ <dependencies>
<dependency>
- <groupId>org.apache.avro</groupId>
- <artifactId>avro</artifactId>
- <version>${avro.version}</version>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <version>${spring-boot.version}</version>
+ <scope>test</scope>
</dependency>
</dependencies>
diff --git a/storage-rocketmq/pom.xml b/storage-rocketmq/pom.xml
index 2536792..2648a4d 100644
--- a/storage-rocketmq/pom.xml
+++ b/storage-rocketmq/pom.xml
@@ -51,6 +51,11 @@
<artifactId>rocketmq-tools</artifactId>
<version>${rocketmq.client.version}</version>
</dependency>
+
+ <dependency>
+ <groupId>org.rocksdb</groupId>
+ <artifactId>rocksdbjni</artifactId>
+ </dependency>
</dependencies>
diff --git
a/storage-rocketmq/src/main/java/org/apache/rocketmq/schema/registry/storage/rocketmq/RocketmqClient.java
b/storage-rocketmq/src/main/java/org/apache/rocketmq/schema/registry/storage/rocketmq/RocketmqClient.java
index b782b6c..452e637 100644
---
a/storage-rocketmq/src/main/java/org/apache/rocketmq/schema/registry/storage/rocketmq/RocketmqClient.java
+++
b/storage-rocketmq/src/main/java/org/apache/rocketmq/schema/registry/storage/rocketmq/RocketmqClient.java
@@ -165,7 +165,6 @@ public class RocketmqClient {
if (cfs.size() <= 1) {
List<byte[]> columnFamilies =
Arrays.asList(STORAGE_ROCKSDB_SCHEMA_COLUMN_FAMILY,
STORAGE_ROCKSDB_SUBJECT_COLUMN_FAMILY);
- // TODO: add default cf in handles when needed
cache = org.rocksdb.RocksDB.open(options, cachePath);
cfDescriptors.addAll(columnFamilies.stream()
.map(ColumnFamilyDescriptor::new)
@@ -298,6 +297,7 @@ public class RocketmqClient {
if (!result.getSendStatus().equals(SendStatus.SEND_OK)) {
throw new SchemaException("Register schema: " +
schema.getQualifiedName() + " failed: " + result.getSendStatus());
}
+ log.info("send message success, msgId = {}",
result.getMsgId());
}
return schema;
@@ -375,6 +375,7 @@ public class RocketmqClient {
if (result.getSendStatus() != SendStatus.SEND_OK) {
throw new SchemaException("Update " +
update.getQualifiedName() + " failed: " + result.getSendStatus());
}
+ log.info("send message success, msgId = {}",
result.getMsgId());
}
return update;
} catch (SchemaException e) {
diff --git
a/storage-rocketmq/src/main/java/org/apache/rocketmq/schema/registry/storage/rocketmq/RocketmqStorageUtils.java
b/storage-rocketmq/src/main/java/org/apache/rocketmq/schema/registry/storage/rocketmq/RocketmqStorageUtils.java
index c42a542..c818b1d 100644
---
a/storage-rocketmq/src/main/java/org/apache/rocketmq/schema/registry/storage/rocketmq/RocketmqStorageUtils.java
+++
b/storage-rocketmq/src/main/java/org/apache/rocketmq/schema/registry/storage/rocketmq/RocketmqStorageUtils.java
@@ -24,11 +24,6 @@ import org.rocksdb.RocksDBException;
public class RocketmqStorageUtils {
- public static boolean validate(byte[] value, byte[] expect) throws
RocksDBException {
- // TODO
- return true;
- }
-
public static void checkAndPut(String key, byte[] value, RocksDB db)
throws RocksDBException {
byte[] oldValue = db.get(key.getBytes(StandardCharsets.UTF_8));
if (oldValue == null || !Arrays.equals(oldValue, value)) {
diff --git
a/storage-rocketmq/src/main/java/org/apache/rocketmq/schema/registry/storage/rocketmq/configs/RocketmqConfigConstants.java
b/storage-rocketmq/src/main/java/org/apache/rocketmq/schema/registry/storage/rocketmq/configs/RocketmqConfigConstants.java
index 9781e04..b46c6e1 100644
---
a/storage-rocketmq/src/main/java/org/apache/rocketmq/schema/registry/storage/rocketmq/configs/RocketmqConfigConstants.java
+++
b/storage-rocketmq/src/main/java/org/apache/rocketmq/schema/registry/storage/rocketmq/configs/RocketmqConfigConstants.java
@@ -29,15 +29,15 @@ public class RocketmqConfigConstants {
public static final String STORAGE_ROCKETMQ_PRODUCER_GROUP_DEFAULT =
"default";
public static final String STORAGE_ROCKETMQ_CONSUMER_GROUP =
"storage.rocketmq.consumer.group";
- public static final String STORAGE_ROCKETMQ_CONSUMER_GROUP_DEFAULT =
+ public static final String STORAGE_ROCKETMQ_CONSUMER_GROUP_DEFAULT =
"GID_schema_registry_" +
CommonUtil.getIp().replace(".", "_");
public static final String STORAGE_ROCKETMQ_NAMESRV =
"storage.rocketmq.namesrv";
public static final String STORAGE_ROCKETMQ_NAMESRV_DEFAULT =
"http://localhost:9876";
public static final String STORAGE_ROCKETMQ_TOPIC =
"storage.rocketmq.topic";
- public static final String STORAGE_ROCKETMQ_TOPIC_DEFAULT =
"RMQ_SYS_schema_registry_storage_topic";
- public static final String STORAGE_ROCKETMQ_COMPACT_TOPIC_DEFAULT =
"RMQ_SYS_schema_registry_storage_compact_topic";
+ public static final String STORAGE_ROCKETMQ_TOPIC_DEFAULT =
"RMQ_SYS_schema_registry_storage";
+ public static final String STORAGE_ROCKETMQ_COMPACT_TOPIC_DEFAULT =
"RMQ_SYS_schema_registry_storage_compaction";
public static final String STORAGE_ROCKETMQ_USE_COMPACT_TOPIC =
"storage.rocketmq.use.compact.topic";
public static final String STORAGE_ROCKETMQ_USE_COMPACT_TOPIC_DEFAULT =
"false";
diff --git a/war/pom.xml b/war/pom.xml
index b77aafe..378aad8 100644
--- a/war/pom.xml
+++ b/war/pom.xml
@@ -36,7 +36,27 @@
<packaging>war</packaging>
<dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <type>pom</type>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-actuator</artifactId>
+ </dependency>
</dependencies>
<build>