You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by pp...@apache.org on 2022/02/01 14:49:58 UTC

[incubator-datalab] 03/03: [SPRING-MIGRATION] Self-service, provisioning

This is an automated email from the ASF dual-hosted git repository.

ppapou pushed a commit to branch spring-migration
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git

commit 6656c72002c7f0f767f8d4001e0dd719ff6e354b
Author: Pavel Papou <pp...@gmail.com>
AuthorDate: Tue Feb 1 09:30:57 2022 -0500

    [SPRING-MIGRATION] Self-service, provisioning
    
     - self service spring migration
---
 .../backendapi/conf/SecurityConfiguration.java     |   1 -
 services/self-service/pom.xml                      |  91 +++++++++++++++-
 services/self-service/self-service.yml             |  70 ++++++------
 .../datalab/backendapi/SelfServiceApplication.java | 121 ++++++++++-----------
 .../backendapi/conf/KeycloakConfiguration.java     |  72 ++++++++----
 .../com/epam/datalab/backendapi/dao/EnvDAO.java    |   2 +-
 .../dropwizard/bundles/DatalabKeycloakBundle.java  |  58 ----------
 .../backendapi/healthcheck/MongoHealthCheck.java   |   3 +-
 .../backendapi/interceptor/AuditInterceptor.java   |   6 +-
 .../interceptor/BudgetLimitInterceptor.java        |   5 +-
 .../interceptor/ProjectAdminInterceptor.java       |   5 +-
 .../resources/ApplicationSettingResource.java      |   3 +-
 .../backendapi/resources/AuditResource.java        |   3 +-
 .../backendapi/resources/BackupResource.java       |   3 +-
 .../resources/ChangePropertiesResource.java        |   3 +-
 .../backendapi/resources/EndpointResource.java     |   3 +-
 .../backendapi/resources/EnvironmentResource.java  |   3 +-
 .../backendapi/resources/ExploratoryResource.java  |   3 +-
 .../backendapi/resources/GitCredsResource.java     |   3 +-
 .../resources/ImageExploratoryResource.java        |   3 +-
 .../resources/InfrastructureInfoResource.java      |   4 +-
 .../backendapi/resources/KeycloakResource.java     |  30 +++--
 .../resources/LibExploratoryResource.java          |   3 +-
 .../backendapi/resources/OdahuResource.java        |   3 +-
 .../backendapi/resources/ProjectResource.java      |   6 +-
 .../backendapi/resources/SchedulerJobResource.java |   3 +-
 .../backendapi/resources/SystemInfoResource.java   |   3 +-
 .../backendapi/resources/UserGroupResource.java    |   3 +-
 .../backendapi/resources/UserRoleResource.java     |   3 +-
 .../backendapi/resources/UserSettingsResource.java |   3 +-
 .../resources/callback/BackupCallback.java         |   5 +-
 .../callback/CheckInactivityCallback.java          |   5 +-
 .../resources/callback/ComputationalCallback.java  |  11 +-
 .../callback/EnvironmentStatusCallback.java        |   3 +-
 .../resources/callback/ExploratoryCallback.java    |  13 ++-
 .../resources/callback/GitCredsCallback.java       |   3 +-
 .../resources/callback/ImageCallback.java          |   5 +-
 .../resources/callback/LibraryCallback.java        |   5 +-
 .../resources/callback/OdahuCallback.java          |   3 +-
 .../resources/callback/ProjectCallback.java        |   3 +-
 .../resources/callback/ReuploadKeyCallback.java    |   5 +-
 .../schedulers/CheckApplicationQuoteScheduler.java |   5 +-
 .../schedulers/CheckInactivityScheduledJob.java    |   3 +-
 .../CheckInfrastructureStatusScheduler.java        |   3 +-
 .../schedulers/CheckProjectQuoteScheduler.java     |   7 +-
 .../schedulers/CheckUserQuoteScheduler.java        |   5 +-
 .../schedulers/billing/BillingScheduler.java       |   3 +-
 .../computational/StartComputationalJob.java       |   3 +-
 .../computational/StopComputationalJob.java        |   3 +-
 .../computational/TerminateComputationalJob.java   |   3 +-
 .../endpoint/CheckEndpointStatusScheduler.java     |   5 +-
 .../exploratory/StartExploratoryJob.java           |   3 +-
 .../schedulers/exploratory/StopExploratoryJob.java |   3 +-
 .../service/ApplicationSettingServiceImpl.java     |   3 +-
 .../backendapi/service/KeycloakServiceImpl.java    |  22 ++--
 .../backendapi/service/SecurityServiceImpl.java    |   3 +-
 .../datalab/backendapi/service/TagServiceImpl.java |   3 +-
 .../backendapi/service/UserRoleServiceImpl.java    |   6 +-
 .../backendapi/service/UserSettingServiceImpl.java |   6 +-
 .../service/impl/AccessKeyServiceImpl.java         |   6 +-
 .../backendapi/service/impl/AuditServiceImpl.java  |   3 +-
 .../backendapi/service/impl/BackupServiceImpl.java |   8 +-
 .../service/impl/BillingServiceImpl.java           |   3 +-
 .../backendapi/service/impl/BucketServiceImpl.java |   3 +-
 .../service/impl/ComputationalServiceImpl.java     |   3 +-
 .../service/impl/EndpointServiceImpl.java          |   3 +-
 .../service/impl/EnvironmentServiceImpl.java       |   3 +-
 .../service/impl/ExploratoryServiceImpl.java       |   6 +-
 .../service/impl/GitCredentialServiceImpl.java     |  13 ++-
 .../service/impl/GuacamoleServiceImpl.java         |   6 +-
 .../service/impl/ImageExploratoryServiceImpl.java  |  18 +--
 .../service/impl/InactivityServiceImpl.java        |  17 +--
 .../impl/InfrastructureInfoServiceImpl.java        |   3 +-
 .../impl/InfrastructureTemplateServiceImpl.java    |   3 +-
 .../service/impl/LibraryServiceImpl.java           |   3 +-
 .../service/impl/MavenCentralLibraryService.java   |   3 +-
 .../backendapi/service/impl/OdahuServiceImpl.java  |   3 +-
 .../service/impl/ProjectServiceImpl.java           |   3 +-
 .../service/impl/ReuploadKeyServiceImpl.java       |  13 ++-
 .../service/impl/SchedulerJobServiceImpl.java      |  22 ++--
 .../service/impl/SystemInfoServiceImpl.java        |   3 +-
 .../service/impl/UserGroupServiceImpl.java         |   3 +-
 .../servlet/guacamole/GuacamoleServlet.java        |   3 +-
 .../epam/datalab/backendapi/util/BillingUtils.java |   2 +-
 .../datalab/backendapi/util/RequestBuilder.java    |   8 +-
 .../datalab/backendapi/resources/TestBase.java     |   2 +-
 86 files changed, 492 insertions(+), 346 deletions(-)

diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/conf/SecurityConfiguration.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/conf/SecurityConfiguration.java
index 0f36c3d..f787380 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/conf/SecurityConfiguration.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/conf/SecurityConfiguration.java
@@ -2,7 +2,6 @@ package com.epam.datalab.backendapi.conf;
 
 import org.keycloak.adapters.KeycloakConfigResolver;
 import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver;
-import org.keycloak.adapters.springsecurity.KeycloakConfiguration;
 import org.keycloak.adapters.springsecurity.KeycloakSecurityComponents;
 import org.keycloak.adapters.springsecurity.authentication.KeycloakAuthenticationProvider;
 import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter;
diff --git a/services/self-service/pom.xml b/services/self-service/pom.xml
index a3eba43..7e34def 100644
--- a/services/self-service/pom.xml
+++ b/services/self-service/pom.xml
@@ -42,14 +42,71 @@
             <url>https://nexus.develop.dlabanalytics.com/repository/maven-public/</url>
         </repository>
     </repositories>
-
+<dependencyManagement>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-dependencies</artifactId>
+            <version>2.1.3.RELEASE</version>
+            <type>pom</type>
+            <scope>import</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-mongodb</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-security</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.keycloak</groupId>
+            <artifactId>keycloak-spring-boot-starter</artifactId>
+            <version>16.1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.keycloak</groupId>
+            <artifactId>keycloak-spring-security-adapter</artifactId>
+            <version>4.8.3.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.keycloak.bom</groupId>
+            <artifactId>keycloak-adapter-bom</artifactId>
+            <version>4.8.3.Final</version>
+            <type>pom</type>
+            <scope>import</scope>
+        </dependency>
+    </dependencies>
+    </dependencyManagement>
     <dependencies>
         <dependency>
             <groupId>de.ahus1.keycloak.dropwizard</groupId>
             <artifactId>keycloak-dropwizard</artifactId>
             <version>1.1.1</version>
         </dependency>
-
+        <dependency>
+            <groupId>org.keycloak</groupId>
+            <artifactId>keycloak-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.keycloak</groupId>
+            <artifactId>keycloak-spring-security-adapter</artifactId>
+            <version>4.8.3.Final</version>
+        </dependency>
         <dependency>
             <groupId>com.novemberain</groupId>
             <artifactId>quartz-mongodb</artifactId>
@@ -202,6 +259,32 @@
             <artifactId>commons-fileupload</artifactId>
             <version>${commons-fileupload.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot</artifactId>
+            <version>2.1.3.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.keycloak</groupId>
+            <artifactId>keycloak-spring-boot-adapter-core</artifactId>
+            <version>4.8.3.Final</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+            <version>2.1.3.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.security</groupId>
+            <artifactId>spring-security-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.security</groupId>
+            <artifactId>spring-security-web</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
@@ -237,11 +320,11 @@
                                         <Created-By>&lt;EPAM&gt; Systems</Created-By>
                                         <Name>com/epam/datalab</Name>
                                         <Implementation-Title>DataLab Self-Service</Implementation-Title>
-                                        <DataLab-Version>${datalab.version}</DataLab-Version>
+                                        <!--DataLab-Version>${datalab.version}</DataLab-Version-->
                                         <Implementation-Vendor>&lt;EPAM&gt; Systems</Implementation-Vendor>
                                         <Build-Time>${maven.build.timestamp}</Build-Time>
                                         <Build-OS>${os.name}</Build-OS>
-                                        <GIT-Branch>${scmBranch}</GIT-Branch>
+                                        <!--GIT-Branch>${scmBranch}</GIT-Branch-->
                                         <GIT-Commit>${buildNumber}</GIT-Commit>
                                     </manifestEntries>
                                 </transformer>
diff --git a/services/self-service/self-service.yml b/services/self-service/self-service.yml
index b8b1ed2..d91a95b 100644
--- a/services/self-service/self-service.yml
+++ b/services/self-service/self-service.yml
@@ -19,7 +19,7 @@
 #
 # ******************************************************************************
 
-<#include "infrastructure-provisioning/src/ssn/templates/ssn.yml">
+#<#include "infrastructure-provisioning/src/ssn/templates/ssn.yml">
 
 # Minimum and maximum number of slave EMR instances than could be created
 minEmrInstanceCount: 2
@@ -54,17 +54,25 @@ billingPort: 8088
 # Set to true to enable audit
 auditEnabled: true
 # Name of configuration file for billing report.
-<#if DEV_MODE == "true">
-billingConfFile: ${sys['user.dir']}/../billing/billing.yml
-<#else>
-billingConfFile: ${DATALAB_CONF_DIR}/billing.yml
-</#if>
+#<#if DEV_MODE == "true">
+#billingConfFile: ${sys['user.dir']}/../billing/billing.yml
+#<#else>
+#billingConfFile: ${DATALAB_CONF_DIR}/billing.yml
+#</#if>
 
 ssnInstanceSize: <SSN_INSTANCE_SIZE>
 
 serviceBaseName: SERVICE_BASE_NAME
 os: OPERATION_SYSTEM
 server:
+  type: https
+  port: 8443
+  validateCerts: false
+  ssl:
+    key-store: /home/pavel/keys/ssn.keystore.jks
+    key-store-type: JKS
+    key-alias: ssn
+    key-store-password: KEYSTORE_PASSWORD
   requestLog:
     appenders:
     - type: file
@@ -76,14 +84,7 @@ server:
   applicationConnectors:
 #    - type: http
 #      port: 8080
-  - type: https
-    port: 8443
-    certAlias: ssn
-    validateCerts: false
-    keyStorePath: ${KEY_STORE_PATH}
-    keyStorePassword: ${KEY_STORE_PASSWORD}
-    trustStorePath: ${TRUST_STORE_PATH}
-    trustStorePassword: ${TRUST_STORE_PASSWORD}
+
   adminConnectors:
 #    - type: http
 #      port: 8081
@@ -99,15 +100,18 @@ server:
 mongoMigrationEnabled: false
 
 logging:
-  level: INFO
-  loggers:
-    com.epam: INFO
-    org.apache.guacamole: DEBUG
-    com.novemberain: ERROR
+  level:
+    root: INFO
+    com:
+      epam: INFO
+      novemberain: ERROR
+    org:
+      apache:
+        guacamole: DEBUG
   appenders:
-<#if DEV_MODE == "true">
-  - type: console
-</#if>
+#<#if DEV_MODE == "true">
+#  - type: console
+#</#if>
   - type: file
     currentLogFilename: ${LOG_ROOT_DIR}/ssn/selfservice.log
     archive: true
@@ -167,17 +171,17 @@ guacamole:
   port: 22
   username: datalab-user
 
-keycloakConfiguration:
-  redirectUri: https://localhost:8443/
-  realm: DLAB_bhliva
-  bearer-only: true
-  auth-server-url: http://52.11.45.11:8080/auth
-  ssl-required: none
-  register-node-at-startup: true
-  register-node-period: 600
-  resource: sss
-  credentials:
-    secret: cf5a484b-039b-4161-8707-ad65c0f25962
+keycloak:
+    #redirectUri: https://localhost:8443/
+    realm: DLAB_bhliva
+    bearer-only: true
+    auth-server-url: http://52.11.45.11:8080/auth
+    ssl-required: none
+    register-node-at-startup: true
+    register-node-period: 600
+    resource: sss
+    credentials:
+      secret: cf5a484b-039b-4161-8707-ad65c0f25962
 
 jerseyClient:
   minThreads: 1
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/SelfServiceApplication.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/SelfServiceApplication.java
index 08ebf1a..231aea8 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/SelfServiceApplication.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/SelfServiceApplication.java
@@ -19,53 +19,7 @@
 
 package com.epam.datalab.backendapi;
 
-import com.epam.datalab.backendapi.conf.SelfServiceApplicationConfiguration;
-import com.epam.datalab.backendapi.dao.IndexCreator;
-import com.epam.datalab.backendapi.domain.ExploratoryLibCache;
-import com.epam.datalab.backendapi.dropwizard.bundles.DatalabKeycloakBundle;
-import com.epam.datalab.backendapi.dropwizard.listeners.MongoStartupListener;
-import com.epam.datalab.backendapi.dropwizard.listeners.RestoreHandlerStartupListener;
-import com.epam.datalab.backendapi.healthcheck.MongoHealthCheck;
-import com.epam.datalab.backendapi.modules.ModuleFactory;
-import com.epam.datalab.backendapi.resources.ApplicationSettingResource;
-import com.epam.datalab.backendapi.resources.AuditResource;
-import com.epam.datalab.backendapi.resources.BackupResource;
-import com.epam.datalab.backendapi.resources.EndpointResource;
-import com.epam.datalab.backendapi.resources.EnvironmentResource;
-import com.epam.datalab.backendapi.resources.ExploratoryResource;
-import com.epam.datalab.backendapi.resources.GitCredsResource;
-import com.epam.datalab.backendapi.resources.ImageExploratoryResource;
 import com.epam.datalab.backendapi.resources.InfrastructureInfoResource;
-import com.epam.datalab.backendapi.resources.InfrastructureTemplateResource;
-import com.epam.datalab.backendapi.resources.KeycloakResource;
-import com.epam.datalab.backendapi.resources.LibExploratoryResource;
-import com.epam.datalab.backendapi.resources.OdahuResource;
-import com.epam.datalab.backendapi.resources.ProjectResource;
-import com.epam.datalab.backendapi.resources.SchedulerJobResource;
-import com.epam.datalab.backendapi.resources.SystemInfoResource;
-import com.epam.datalab.backendapi.resources.UserGroupResource;
-import com.epam.datalab.backendapi.resources.UserRoleResource;
-import com.epam.datalab.backendapi.resources.UserSettingsResource;
-import com.epam.datalab.backendapi.resources.ChangePropertiesResource;
-import com.epam.datalab.backendapi.resources.callback.BackupCallback;
-import com.epam.datalab.backendapi.resources.callback.CheckInactivityCallback;
-import com.epam.datalab.backendapi.resources.callback.ComputationalCallback;
-import com.epam.datalab.backendapi.resources.callback.EnvironmentStatusCallback;
-import com.epam.datalab.backendapi.resources.callback.ExploratoryCallback;
-import com.epam.datalab.backendapi.resources.callback.GitCredsCallback;
-import com.epam.datalab.backendapi.resources.callback.ImageCallback;
-import com.epam.datalab.backendapi.resources.callback.LibraryCallback;
-import com.epam.datalab.backendapi.resources.callback.OdahuCallback;
-import com.epam.datalab.backendapi.resources.callback.ProjectCallback;
-import com.epam.datalab.backendapi.resources.callback.ReuploadKeyCallback;
-import com.epam.datalab.backendapi.schedulers.internal.ManagedScheduler;
-import com.epam.datalab.backendapi.service.EndpointService;
-import com.epam.datalab.backendapi.servlet.guacamole.GuacamoleServlet;
-import com.epam.datalab.cloud.CloudModule;
-import com.epam.datalab.constants.ServiceConsts;
-import com.epam.datalab.migration.mongo.DatalabMongoMigration;
-import com.epam.datalab.mongo.MongoServiceFactory;
-import com.epam.datalab.rest.client.RESTService;
 import com.epam.datalab.rest.mappers.DatalabValidationExceptionMapper;
 import com.epam.datalab.rest.mappers.JsonProcessingExceptionMapper;
 import com.epam.datalab.rest.mappers.ResourceConflictExceptionMapper;
@@ -74,31 +28,68 @@ import com.epam.datalab.rest.mappers.ResourceQuoteReachedExceptionMapper;
 import com.epam.datalab.rest.mappers.RuntimeExceptionMapper;
 import com.epam.datalab.rest.mappers.ValidationExceptionMapper;
 import com.epam.datalab.util.ServiceUtils;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Key;
-import com.google.inject.name.Names;
-import de.thomaskrille.dropwizard_template_config.TemplateConfigBundle;
-import de.thomaskrille.dropwizard_template_config.TemplateConfigBundleConfiguration;
-import io.dropwizard.Application;
-import io.dropwizard.assets.AssetsBundle;
-import io.dropwizard.forms.MultiPartBundle;
-import io.dropwizard.jersey.setup.JerseyEnvironment;
-import io.dropwizard.jetty.BiDiGzipHandler;
-import io.dropwizard.setup.Bootstrap;
-import io.dropwizard.setup.Environment;
 import lombok.extern.slf4j.Slf4j;
-import org.eclipse.jetty.server.Handler;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.handler.HandlerWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
 
 /**
  * Self Service based on Dropwizard application.
  */
 @Slf4j
-public class SelfServiceApplication extends Application<SelfServiceApplicationConfiguration> {
+@SpringBootApplication
+public class SelfServiceApplication implements ApplicationRunner{
     public static final String GUACAMOLE_SERVLET_PATH = "/api/tunnel";
-    private static Injector appInjector;
+
+    //TODO: read about obtain third party objects:
+    //Try in configuration class create the getters with bean annotation
+    //
+//    @Autowired
+//    private JsonProcessingExceptionMapper jsonProcessingExceptionMapper;
+
+//    @Autowired
+//    private ResourceConflictExceptionMapper resourceConflictExceptionMapper;
+//
+//    @Autowired
+//    private ResourceNotFoundExceptionMapper resourceNotFoundExceptionMapper;
+//
+//    @Autowired
+//    private DatalabValidationExceptionMapper datalabValidationExceptionMapper;
+//
+//    @Autowired
+//    private ResourceQuoteReachedExceptionMapper resourceQuoteReachedExceptionMapper;
+//
+//    @Autowired
+//    private RuntimeExceptionMapper runtimeExceptionMapper;
+//
+//    @Autowired
+//    private ValidationExceptionMapper validationExceptionMapper;
+//
+//    @Autowired
+//    private InfrastructureInfoResource infrastructureInfoResource;
+
+    //TODO: thrown Exception class has been removed. See the distinguish.
+    //TODO: Double check with Keycloak barear filter impl!!!
+
+
+    public static void main(String[] args) {
+        if (ServiceUtils.printAppVersion(SelfServiceApplication.class, args)) {
+            return;
+        }
+        new SpringApplicationBuilder()
+                .sources(SelfServiceApplication.class)
+                .build()
+                .run(args);
+    }
+
+    @Override
+    public void run(ApplicationArguments arg){
+
+    }
+
+    /*private static Injector appInjector;
 
     public static Injector getInjector() {
         return appInjector;
@@ -219,5 +210,5 @@ public class SelfServiceApplication extends Application<SelfServiceApplicationCo
         new DatalabMongoMigration(mongoFactory.getHost(), mongoFactory.getPort(), mongoFactory.getUsername(),
                 mongoFactory.getPassword(), mongoFactory.getDatabase()).migrate();
     }
-
+*/
 }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/conf/KeycloakConfiguration.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/conf/KeycloakConfiguration.java
index a4d79ea..7f321f5 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/conf/KeycloakConfiguration.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/conf/KeycloakConfiguration.java
@@ -1,27 +1,53 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
 package com.epam.datalab.backendapi.conf;
 
-import lombok.Data;
+import org.keycloak.adapters.KeycloakConfigResolver;
+import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver;
+import org.keycloak.adapters.springsecurity.KeycloakSecurityComponents;
+import org.keycloak.adapters.springsecurity.authentication.KeycloakAuthenticationProvider;
+import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.core.authority.mapping.SimpleAuthorityMapper;
+import org.springframework.security.core.session.SessionRegistryImpl;
+import org.springframework.security.web.authentication.session.RegisterSessionAuthenticationStrategy;
+import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy;
+
+@Configuration
+@ComponentScan(
+        basePackageClasses = KeycloakSecurityComponents.class,
+        excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.keycloak.adapters.springsecurity.management.HttpSessionManager"))
+public class KeycloakConfiguration extends KeycloakWebSecurityConfigurerAdapter {
+
+    @Autowired
+    public void configureGlobal(AuthenticationManagerBuilder auth) {
+        KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider();
+        keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper());
+        auth.authenticationProvider(keycloakAuthenticationProvider);
+    }
+
+    @Bean
+    public KeycloakConfigResolver keycloakConfigResolver() {
+        return new KeycloakSpringBootConfigResolver();
+    }
+
+    @Bean
+    @Override
+    protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
+        return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl());
+    }
 
-@Data
-public class KeycloakConfiguration extends de.ahus1.keycloak.dropwizard.KeycloakConfiguration {
-    private String redirectUri;
+    @Override
+    protected void configure(HttpSecurity http) throws Exception {
+        super.configure(http);
+        http
+                .anonymous().disable()
+                .authorizeRequests()
+                .anyRequest()
+                .authenticated();
+    }
 }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/EnvDAO.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/EnvDAO.java
index 1e03de1..f660b05 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/EnvDAO.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/EnvDAO.java
@@ -475,7 +475,7 @@ public class EnvDAO extends BaseDAO {
         try {
             // Send post request to provisioning service to terminate spot EMR.
             ComputationalResourceAws computational = new ComputationalResourceAws();
-            SelfServiceApplication.getInjector().injectMembers(computational);
+            //SelfServiceApplication.getInjector().injectMembers(computational);
             UserInfo ui = new UserInfo(user, accessToken);
             computational.terminate(ui, project, exploratoryName, computationalName);
         } catch (Exception e) {
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/dropwizard/bundles/DatalabKeycloakBundle.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/dropwizard/bundles/DatalabKeycloakBundle.java
deleted file mode 100644
index 8b1a182..0000000
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/dropwizard/bundles/DatalabKeycloakBundle.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package com.epam.datalab.backendapi.dropwizard.bundles;
-
-import com.epam.datalab.auth.UserInfo;
-import com.epam.datalab.backendapi.auth.KeycloakAuthenticator;
-import com.epam.datalab.backendapi.auth.SelfServiceSecurityAuthorizer;
-import com.epam.datalab.backendapi.conf.SelfServiceApplicationConfiguration;
-import com.google.inject.Inject;
-import de.ahus1.keycloak.dropwizard.KeycloakBundle;
-import de.ahus1.keycloak.dropwizard.KeycloakConfiguration;
-import io.dropwizard.auth.Authenticator;
-import io.dropwizard.auth.Authorizer;
-
-import java.security.Principal;
-
-public class DatalabKeycloakBundle extends KeycloakBundle<SelfServiceApplicationConfiguration> {
-
-    @Inject
-    private KeycloakAuthenticator authenticator;
-
-    @Override
-    protected KeycloakConfiguration getKeycloakConfiguration(SelfServiceApplicationConfiguration configuration) {
-        return configuration.getKeycloakConfiguration();
-    }
-
-    @Override
-    protected Class<? extends Principal> getUserClass() {
-        return UserInfo.class;
-    }
-
-    @Override
-    protected Authorizer createAuthorizer() {
-        return new SelfServiceSecurityAuthorizer();
-    }
-
-    @Override
-    protected Authenticator createAuthenticator(KeycloakConfiguration configuration) {
-        return new KeycloakAuthenticator(configuration);
-    }
-}
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/healthcheck/MongoHealthCheck.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/healthcheck/MongoHealthCheck.java
index 20c049b..b4aabdd 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/healthcheck/MongoHealthCheck.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/healthcheck/MongoHealthCheck.java
@@ -23,12 +23,13 @@ import com.codahale.metrics.health.HealthCheck;
 import com.epam.datalab.mongo.MongoService;
 import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 @Slf4j
 public class MongoHealthCheck extends HealthCheck {
     private final MongoService mongoService;
 
-    @Inject
+    @Autowired
     public MongoHealthCheck(MongoService mongoService) {
         this.mongoService = mongoService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/interceptor/AuditInterceptor.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/interceptor/AuditInterceptor.java
index 94a7068..ee2f00d 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/interceptor/AuditInterceptor.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/interceptor/AuditInterceptor.java
@@ -32,10 +32,12 @@ import com.epam.datalab.backendapi.domain.AuditResourceTypeEnum;
 import com.epam.datalab.backendapi.service.AuditService;
 import com.epam.datalab.exceptions.DatalabException;
 import com.google.inject.Inject;
+import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
 import org.aopalliance.intercept.MethodInterceptor;
 import org.aopalliance.intercept.MethodInvocation;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
@@ -45,9 +47,9 @@ import java.util.stream.IntStream;
 
 @Slf4j
 public class AuditInterceptor implements MethodInterceptor {
-    @Inject
+    @Autowired
     private AuditService auditService;
-    @Inject
+    @Autowired
     private SelfServiceApplicationConfiguration configuration;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/interceptor/BudgetLimitInterceptor.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/interceptor/BudgetLimitInterceptor.java
index 421d37d..ed4da4e 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/interceptor/BudgetLimitInterceptor.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/interceptor/BudgetLimitInterceptor.java
@@ -27,6 +27,7 @@ import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 import org.aopalliance.intercept.MethodInterceptor;
 import org.aopalliance.intercept.MethodInvocation;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Parameter;
@@ -35,9 +36,9 @@ import java.util.stream.IntStream;
 
 @Slf4j
 public class BudgetLimitInterceptor implements MethodInterceptor {
-    @Inject
+    @Autowired
     private BillingDAO billingDAO;
-    @Inject
+    @Autowired
     private BillingService billingService;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/interceptor/ProjectAdminInterceptor.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/interceptor/ProjectAdminInterceptor.java
index f978153..f22c81d 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/interceptor/ProjectAdminInterceptor.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/interceptor/ProjectAdminInterceptor.java
@@ -30,6 +30,7 @@ import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 import org.aopalliance.intercept.MethodInterceptor;
 import org.aopalliance.intercept.MethodInvocation;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Parameter;
@@ -38,10 +39,10 @@ import java.util.stream.IntStream;
 
 @Slf4j
 public class ProjectAdminInterceptor implements MethodInterceptor {
-    @Inject
+    @Autowired
     private ProjectService projectService;
 
-    @Override
+    @Autowired
     public Object invoke(MethodInvocation mi) throws Throwable {
         if (grantAccess(mi)) {
             return mi.proceed();
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ApplicationSettingResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ApplicationSettingResource.java
index 40362bc..48c2155 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ApplicationSettingResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ApplicationSettingResource.java
@@ -23,6 +23,7 @@ import com.epam.datalab.backendapi.service.ApplicationSettingService;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.annotation.security.RolesAllowed;
 import javax.validation.constraints.Min;
@@ -43,7 +44,7 @@ public class ApplicationSettingResource {
 
     private final ApplicationSettingService settingService;
 
-    @Inject
+    @Autowired
     public ApplicationSettingResource(ApplicationSettingService settingService) {
         this.settingService = settingService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/AuditResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/AuditResource.java
index aa04fd0..769cb33 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/AuditResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/AuditResource.java
@@ -25,6 +25,7 @@ import com.epam.datalab.backendapi.service.AuditService;
 import com.epam.datalab.model.StringList;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.validation.Valid;
 import javax.ws.rs.Consumes;
@@ -40,7 +41,7 @@ import javax.ws.rs.core.Response;
 public class AuditResource {
     private final AuditService auditService;
 
-    @Inject
+    @Autowired
     public AuditResource(AuditService auditService) {
         this.auditService = auditService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/BackupResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/BackupResource.java
index 5d60ddb..1aa4224 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/BackupResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/BackupResource.java
@@ -28,6 +28,7 @@ import com.epam.datalab.dto.backup.EnvBackupDTO;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.annotation.security.RolesAllowed;
 import javax.validation.Valid;
@@ -51,7 +52,7 @@ public class BackupResource {
     private final RequestBuilder requestBuilder;
     private final RequestId requestId;
 
-    @Inject
+    @Autowired
     public BackupResource(BackupService backupService, RequestBuilder requestBuilder, RequestId requestId) {
         this.backupService = backupService;
         this.requestBuilder = requestBuilder;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ChangePropertiesResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ChangePropertiesResource.java
index 048b099..502e45e 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ChangePropertiesResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ChangePropertiesResource.java
@@ -30,6 +30,7 @@ import com.epam.datalab.properties.RestartForm;
 import com.epam.datalab.properties.YmlDTO;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.inject.Inject;
 import javax.ws.rs.*;
@@ -46,7 +47,7 @@ public class ChangePropertiesResource implements ChangePropertiesConst {
     private final ExternalChangeProperties externalChangeProperties;
     private final String deployedOn;
 
-    @Inject
+    @Autowired
     public ChangePropertiesResource(EndpointDAO endpointDAO, ExternalChangeProperties externalChangeProperties,
                                     SelfServiceApplicationConfiguration selfServiceApplicationConfiguration) {
         this.endpointDAO = endpointDAO;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/EndpointResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/EndpointResource.java
index 48a1061..c8d24ca 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/EndpointResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/EndpointResource.java
@@ -32,6 +32,7 @@ import io.swagger.v3.oas.annotations.headers.Header;
 import io.swagger.v3.oas.annotations.media.Content;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.annotation.security.RolesAllowed;
 import javax.validation.Valid;
@@ -56,7 +57,7 @@ public class EndpointResource {
     @Context
     private UriInfo uriInfo;
 
-    @Inject
+    @Autowired
     public EndpointResource(EndpointService endpointService) {
         this.endpointService = endpointService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/EnvironmentResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/EnvironmentResource.java
index b4b1418..3b27c79 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/EnvironmentResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/EnvironmentResource.java
@@ -25,6 +25,7 @@ import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
 import org.hibernate.validator.constraints.NotEmpty;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.annotation.security.RolesAllowed;
 import javax.ws.rs.Consumes;
@@ -43,7 +44,7 @@ public class EnvironmentResource {
 
     private EnvironmentService environmentService;
 
-    @Inject
+    @Autowired
     public EnvironmentResource(EnvironmentService environmentService) {
         this.environmentService = environmentService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ExploratoryResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ExploratoryResource.java
index 39bfb89..24656cf 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ExploratoryResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ExploratoryResource.java
@@ -32,6 +32,7 @@ import com.epam.datalab.rest.contracts.ExploratoryAPI;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
@@ -51,7 +52,7 @@ public class ExploratoryResource implements ExploratoryAPI {
 
     private final ExploratoryService exploratoryService;
 
-    @Inject
+    @Autowired
     public ExploratoryResource(ExploratoryService exploratoryService) {
         this.exploratoryService = exploratoryService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/GitCredsResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/GitCredsResource.java
index 2a9cf43..55160d2 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/GitCredsResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/GitCredsResource.java
@@ -26,6 +26,7 @@ import com.epam.datalab.rest.contracts.ExploratoryAPI;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
@@ -48,7 +49,7 @@ public class GitCredsResource implements ExploratoryAPI {
 
     private final GitCredentialService gitCredentialService;
 
-    @Inject
+    @Autowired
     public GitCredsResource(GitCredentialService gitCredentialService) {
         this.gitCredentialService = gitCredentialService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ImageExploratoryResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ImageExploratoryResource.java
index 95dcdb4..eb50ae9 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ImageExploratoryResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ImageExploratoryResource.java
@@ -27,6 +27,7 @@ import com.epam.datalab.backendapi.service.ImageExploratoryService;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
@@ -58,7 +59,7 @@ public class ImageExploratoryResource {
     private final ImageExploratoryService imageExploratoryService;
     private final RequestId requestId;
 
-    @Inject
+    @Autowired
     public ImageExploratoryResource(ImageExploratoryService imageExploratoryService, RequestId requestId) {
         this.imageExploratoryService = imageExploratoryService;
         this.requestId = requestId;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/InfrastructureInfoResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/InfrastructureInfoResource.java
index c477c1e..5cbba51 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/InfrastructureInfoResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/InfrastructureInfoResource.java
@@ -26,6 +26,8 @@ import com.epam.datalab.backendapi.service.InfrastructureInfoService;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DefaultValue;
@@ -48,7 +50,7 @@ public class InfrastructureInfoResource {
 
     private final InfrastructureInfoService infrastructureInfoService;
 
-    @Inject
+    @Autowired
     public InfrastructureInfoResource(InfrastructureInfoService infrastructureInfoService) {
         this.infrastructureInfoService = infrastructureInfoService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/KeycloakResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/KeycloakResource.java
index 6e44494..3ee5316 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/KeycloakResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/KeycloakResource.java
@@ -32,6 +32,8 @@ import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
 import org.keycloak.representations.AccessTokenResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
 
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
@@ -61,25 +63,29 @@ public class KeycloakResource {
     private final String redirectUri;
     private final boolean defaultAccess;
 
-    @Inject
+    @Autowired
     public KeycloakResource(SecurityService securityService, SelfServiceApplicationConfiguration configuration,
                             SecurityDAO securityDAO, KeycloakService keycloakService) {
         this.securityDAO = securityDAO;
         this.defaultAccess = configuration.getRoleDefaultAccess();
         final KeycloakConfiguration keycloakConfiguration = configuration.getKeycloakConfiguration();
-        this.redirectUri = keycloakConfiguration.getRedirectUri();
+        //this.redirectUri = keycloakConfiguration.getRedirectUri();
+        this.redirectUri = "";
         this.securityService = securityService;
         this.keycloakService = keycloakService;
 
-        loginUri = format(LOGIN_URI_FORMAT,
-                keycloakConfiguration.getAuthServerUrl(),
-                keycloakConfiguration.getRealm(),
-                keycloakConfiguration.getResource(),
-                redirectUri);
-        logoutUri = format(KEYCLOAK_LOGOUT_URI_FORMAT,
-                keycloakConfiguration.getAuthServerUrl(),
-                keycloakConfiguration.getRealm(),
-                redirectUri);
+//        loginUri = format(LOGIN_URI_FORMAT,
+//
+//                keycloakConfiguration.getAuthServerUrl(),
+//                keycloakConfiguration.getRealm(),
+//                keycloakConfiguration.getResource(),
+//                redirectUri);
+//        logoutUri = format(KEYCLOAK_LOGOUT_URI_FORMAT,
+//                keycloakConfiguration.getAuthServerUrl(),
+//                keycloakConfiguration.getRealm(),
+//                redirectUri);
+        loginUri = "";
+        logoutUri = "";
     }
 
     @GET
@@ -97,7 +103,7 @@ public class KeycloakResource {
 
     @POST
     @Path("/authorize")
-    public Response authorize(@Auth UserInfo userInfo) {
+    public Response authorize(@AuthenticationPrincipal UserInfo userInfo) {
         UserRoles.initialize(securityDAO, defaultAccess);
         return Response.ok().build();
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/LibExploratoryResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/LibExploratoryResource.java
index eb16310..b66f20c 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/LibExploratoryResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/LibExploratoryResource.java
@@ -38,6 +38,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
 import org.hibernate.validator.constraints.NotBlank;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
@@ -66,7 +67,7 @@ public class LibExploratoryResource {
     private final ExploratoryDAO exploratoryDAO;
     private final LibraryService libraryService;
 
-    @Inject
+    @Autowired
     public LibExploratoryResource(ExploratoryDAO exploratoryDAO, LibraryService libraryService,
                                   ExternalLibraryService externalLibraryService) {
         this.exploratoryDAO = exploratoryDAO;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/OdahuResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/OdahuResource.java
index 4989893..6e67415 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/OdahuResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/OdahuResource.java
@@ -26,6 +26,7 @@ import com.epam.datalab.backendapi.service.OdahuService;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import io.swagger.v3.oas.annotations.Parameter;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.annotation.security.RolesAllowed;
 import javax.validation.Valid;
@@ -46,7 +47,7 @@ public class OdahuResource {
 
 	private final OdahuService odahuService;
 
-	@Inject
+	@Autowired
 	public OdahuResource(OdahuService odahuService) {
 		this.odahuService = odahuService;
 	}
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ProjectResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ProjectResource.java
index 040b4f6..018a4bd 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ProjectResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ProjectResource.java
@@ -40,6 +40,8 @@ import io.swagger.v3.oas.annotations.media.Content;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.responses.ApiResponse;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
 
 import javax.annotation.security.RolesAllowed;
 import javax.validation.Valid;
@@ -69,7 +71,7 @@ public class ProjectResource {
     @Context
     private UriInfo uriInfo;
 
-    @Inject
+    @Autowired
     public ProjectResource(ProjectService projectService, AccessKeyService keyService) {
         this.projectService = projectService;
         this.keyService = keyService;
@@ -90,7 +92,7 @@ public class ProjectResource {
     @POST
     @Consumes(MediaType.APPLICATION_JSON)
     @RolesAllowed("/api/project/create")
-    public Response createProject(@Parameter(hidden = true) @Auth UserInfo userInfo,
+    public Response createProject(@Parameter(hidden = true) @AuthenticationPrincipal UserInfo userInfo,
                                   @Valid CreateProjectDTO projectDTO) {
         log.info("Trying to create project: {}", projectDTO);
         List<ProjectEndpointDTO> projectEndpointDTOS = projectDTO.getEndpoints()
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/SchedulerJobResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/SchedulerJobResource.java
index 0ecf157..28c7a5a 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/SchedulerJobResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/SchedulerJobResource.java
@@ -27,6 +27,7 @@ import com.epam.datalab.dto.SchedulerJobDTO;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
@@ -48,7 +49,7 @@ public class SchedulerJobResource {
 
     private final SchedulerJobService schedulerJobService;
 
-    @Inject
+    @Autowired
     public SchedulerJobResource(SchedulerJobService schedulerJobService) {
         this.schedulerJobService = schedulerJobService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/SystemInfoResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/SystemInfoResource.java
index 0c20dcb..21ea3d8 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/SystemInfoResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/SystemInfoResource.java
@@ -24,6 +24,7 @@ import com.epam.datalab.backendapi.service.SystemInfoService;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.annotation.security.RolesAllowed;
 import javax.ws.rs.GET;
@@ -40,7 +41,7 @@ public class SystemInfoResource {
 
     private final SystemInfoService systemInfoService;
 
-    @Inject
+    @Autowired
     public SystemInfoResource(SystemInfoService systemInfoService) {
         this.systemInfoService = systemInfoService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/UserGroupResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/UserGroupResource.java
index b8d92b6..3d21bda 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/UserGroupResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/UserGroupResource.java
@@ -25,6 +25,7 @@ import com.epam.datalab.backendapi.service.UserGroupService;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.annotation.security.RolesAllowed;
 import javax.validation.Valid;
@@ -47,7 +48,7 @@ public class UserGroupResource {
 
     private final UserGroupService userGroupService;
 
-    @Inject
+    @Autowired
     public UserGroupResource(UserGroupService userGroupService) {
         this.userGroupService = userGroupService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/UserRoleResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/UserRoleResource.java
index b14d94c..0771f2e 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/UserRoleResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/UserRoleResource.java
@@ -24,6 +24,7 @@ import com.epam.datalab.backendapi.service.UserRoleService;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.annotation.security.RolesAllowed;
 import javax.ws.rs.Consumes;
@@ -43,7 +44,7 @@ public class UserRoleResource {
 
     private final UserRoleService userRoleService;
 
-    @Inject
+    @Autowired
     public UserRoleResource(UserRoleService roleService) {
         this.userRoleService = roleService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/UserSettingsResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/UserSettingsResource.java
index f74fd4e..1bd2ebc 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/UserSettingsResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/UserSettingsResource.java
@@ -28,6 +28,7 @@ import org.hibernate.validator.constraints.NotBlank;
 import org.hibernate.validator.constraints.NotEmpty;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.annotation.security.RolesAllowed;
 import javax.validation.Valid;
@@ -50,7 +51,7 @@ public class UserSettingsResource {
 
     private final UserSettingService userSettingService;
 
-    @Inject
+    @Autowired
     public UserSettingsResource(UserSettingService userSettingService) {
         this.userSettingService = userSettingService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/BackupCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/BackupCallback.java
index 5460625..2046c8b 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/BackupCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/BackupCallback.java
@@ -24,6 +24,7 @@ import com.epam.datalab.backendapi.service.BackupService;
 import com.epam.datalab.dto.backup.EnvBackupStatusDTO;
 import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -38,10 +39,10 @@ import javax.ws.rs.core.UriInfo;
 @Slf4j
 public class BackupCallback {
 
-    @Inject
+    @Autowired
     private BackupService backupService;
 
-    @Inject
+    @Autowired
     private RequestId requestId;
 
     @Context
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/CheckInactivityCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/CheckInactivityCallback.java
index 32b0ed8..ca80ac0 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/CheckInactivityCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/CheckInactivityCallback.java
@@ -24,6 +24,7 @@ import com.epam.datalab.backendapi.service.InactivityService;
 import com.epam.datalab.dto.computational.CheckInactivityStatusDTO;
 import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -40,9 +41,9 @@ import static java.time.ZoneId.systemDefault;
 @Slf4j
 public class CheckInactivityCallback {
 
-    @Inject
+    @Autowired
     private RequestId requestId;
-    @Inject
+    @Autowired
     private InactivityService inactivityService;
 
     @POST
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ComputationalCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ComputationalCallback.java
index 74c5910..2e93547 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ComputationalCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ComputationalCallback.java
@@ -31,6 +31,7 @@ import com.epam.datalab.exceptions.DatalabException;
 import com.epam.datalab.rest.contracts.ApiCallbacks;
 import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -46,15 +47,15 @@ import java.util.Date;
 @Slf4j
 public class ComputationalCallback {
 
-    @Inject
+    @Autowired
     private ComputationalDAO computationalDAO;
-    @Inject
+    @Autowired
     private RequestId requestId;
-    @Inject
+    @Autowired
     private SecurityService securityService;
-    @Inject
+    @Autowired
     private ReuploadKeyService reuploadKeyService;
-    @Inject
+    @Autowired
     private ComputationalService computationalService;
 
     /**
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/EnvironmentStatusCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/EnvironmentStatusCallback.java
index 4a9c0d0..d6d0fc1 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/EnvironmentStatusCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/EnvironmentStatusCallback.java
@@ -28,6 +28,7 @@ import com.epam.datalab.exceptions.DatalabException;
 import com.epam.datalab.rest.contracts.ApiCallbacks;
 import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -45,7 +46,7 @@ public class EnvironmentStatusCallback {
     private final RequestId requestId;
     private final EnvironmentService environmentService;
 
-    @Inject
+    @Autowired
     public EnvironmentStatusCallback(RequestId requestId, EnvironmentService environmentService) {
         this.requestId = requestId;
         this.environmentService = environmentService;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ExploratoryCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ExploratoryCallback.java
index 1e5f8fb..e2d71db 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ExploratoryCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ExploratoryCallback.java
@@ -32,6 +32,7 @@ import com.epam.datalab.exceptions.DatalabException;
 import com.epam.datalab.rest.contracts.ApiCallbacks;
 import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -56,17 +57,17 @@ public class ExploratoryCallback {
 
     private static final String USER_INSTANCE_NOT_EXIST_MSG = "User instance with exploratory name %s for user %s " +
             "doesn't exist";
-    @Inject
+    @Autowired
     private ExploratoryDAO exploratoryDAO;
-    @Inject
+    @Autowired
     private ComputationalDAO computationalDAO;
-    @Inject
+    @Autowired
     private RequestId requestId;
-    @Inject
+    @Autowired
     private SecurityService securityService;
-    @Inject
+    @Autowired
     private ReuploadKeyService reuploadKeyService;
-    @Inject
+    @Autowired
     private ExploratoryService exploratoryService;
 
     /**
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/GitCredsCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/GitCredsCallback.java
index 95ea583..64d9779 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/GitCredsCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/GitCredsCallback.java
@@ -25,6 +25,7 @@ import com.epam.datalab.dto.exploratory.ExploratoryStatusDTO;
 import com.epam.datalab.rest.contracts.ApiCallbacks;
 import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -39,7 +40,7 @@ import javax.ws.rs.core.Response;
 @Slf4j
 public class GitCredsCallback {
 
-    @Inject
+    @Autowired
     private RequestId requestId;
 
     /**
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ImageCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ImageCallback.java
index 587c8ea..8a0a64f 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ImageCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ImageCallback.java
@@ -27,6 +27,7 @@ import com.epam.datalab.dto.exploratory.ImageStatus;
 import com.epam.datalab.model.exploratory.Image;
 import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -41,9 +42,9 @@ import javax.ws.rs.core.Response;
 @Slf4j
 public class ImageCallback {
 
-    @Inject
+    @Autowired
     private ImageExploratoryService imageExploratoryService;
-    @Inject
+    @Autowired
     private RequestId requestId;
 
     @POST
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/LibraryCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/LibraryCallback.java
index e3d69ad..88a2c88 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/LibraryCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/LibraryCallback.java
@@ -28,6 +28,7 @@ import com.epam.datalab.dto.exploratory.LibListStatusDTO;
 import com.epam.datalab.exceptions.DatalabException;
 import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -42,9 +43,9 @@ import javax.ws.rs.core.Response;
 @Slf4j
 public class LibraryCallback {
 
-    @Inject
+    @Autowired
     private ExploratoryLibDAO libraryDAO;
-    @Inject
+    @Autowired
     private RequestId requestId;
 
     /**
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/OdahuCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/OdahuCallback.java
index 8696fad..6ffdaa8 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/OdahuCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/OdahuCallback.java
@@ -25,6 +25,7 @@ import com.epam.datalab.dto.UserInstanceStatus;
 import com.epam.datalab.dto.base.odahu.OdahuResult;
 import com.epam.datalab.exceptions.DatalabException;
 import com.google.inject.Inject;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -40,7 +41,7 @@ public class OdahuCallback {
 	private final OdahuService odahuService;
 	private final RequestId requestId;
 
-	@Inject
+	@Autowired
 	public OdahuCallback(OdahuService odahuService, RequestId requestId) {
 		this.odahuService = odahuService;
 		this.requestId = requestId;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ProjectCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ProjectCallback.java
index 23459ea..b8ccd7a 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ProjectCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ProjectCallback.java
@@ -30,6 +30,7 @@ import com.epam.datalab.dto.imagemetadata.EdgeGPU;
 import com.epam.datalab.exceptions.DatalabException;
 import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -49,7 +50,7 @@ public class ProjectCallback {
     private final RequestId requestId;
     private final GpuDAO gpuDAO;
 
-    @Inject
+    @Autowired
     public ProjectCallback(ProjectDAO projectDAO, EndpointDAO endpointDAO, ExploratoryService exploratoryService, RequestId requestId,
                            GpuDAO gpuDAO) {
         this.projectDAO = projectDAO;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ReuploadKeyCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ReuploadKeyCallback.java
index de371d8..3de4f60 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ReuploadKeyCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ReuploadKeyCallback.java
@@ -24,6 +24,7 @@ import com.epam.datalab.backendapi.service.ReuploadKeyService;
 import com.epam.datalab.dto.reuploadkey.ReuploadKeyStatusDTO;
 import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -38,9 +39,9 @@ import javax.ws.rs.core.UriInfo;
 @Slf4j
 public class ReuploadKeyCallback {
 
-    @Inject
+    @Autowired
     private RequestId requestId;
-    @Inject
+    @Autowired
     private ReuploadKeyService reuploadKeyService;
 
     @Context
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckApplicationQuoteScheduler.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckApplicationQuoteScheduler.java
index b55ebcc..da3b64f 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckApplicationQuoteScheduler.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckApplicationQuoteScheduler.java
@@ -26,13 +26,14 @@ import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
+import org.springframework.beans.factory.annotation.Autowired;
 
 @Scheduled("checkQuoteScheduler")
 @Slf4j
 public class CheckApplicationQuoteScheduler implements Job {
-    @Inject
+    @Autowired
     private BillingDAO billingDAO;
-    @Inject
+    @Autowired
     private EnvironmentService environmentService;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInactivityScheduledJob.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInactivityScheduledJob.java
index e32b15f..1393873 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInactivityScheduledJob.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInactivityScheduledJob.java
@@ -24,6 +24,7 @@ import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * There realized integration with Quartz scheduler framework and defined check cluster inactivity scheduler job which
@@ -35,7 +36,7 @@ import org.quartz.JobExecutionContext;
 @Scheduled("inactivity")
 public class CheckInactivityScheduledJob implements Job {
 
-    @Inject
+    @Autowired
     private InactivityService inactivityService;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInfrastructureStatusScheduler.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInfrastructureStatusScheduler.java
index ab11001..b24be88 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInfrastructureStatusScheduler.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInfrastructureStatusScheduler.java
@@ -39,6 +39,7 @@ import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -61,7 +62,7 @@ public class CheckInfrastructureStatusScheduler implements Job {
     private static final String AWS_EMR_CLUSTER = "AWS EMR cluster";
 
 
-    @Inject
+    @Autowired
     public CheckInfrastructureStatusScheduler(InfrastructureInfoService infrastructureInfoService, SecurityService securityService,
                                               EndpointService endpointService, ExploratoryDAO exploratoryDAO, ProjectService projectService) {
         this.infrastructureInfoService = infrastructureInfoService;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckProjectQuoteScheduler.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckProjectQuoteScheduler.java
index bc16fce..3b02597 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckProjectQuoteScheduler.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckProjectQuoteScheduler.java
@@ -28,16 +28,17 @@ import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
+import org.springframework.beans.factory.annotation.Autowired;
 
 @Scheduled("checkProjectQuoteScheduler")
 @Slf4j
 public class CheckProjectQuoteScheduler implements Job {
 
-    @Inject
+    @Autowired
     private BillingService billingService;
-    @Inject
+    @Autowired
     private EnvironmentService environmentService;
-    @Inject
+    @Autowired
     private ProjectService projectService;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckUserQuoteScheduler.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckUserQuoteScheduler.java
index c470763..3c83417 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckUserQuoteScheduler.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckUserQuoteScheduler.java
@@ -27,14 +27,15 @@ import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
+import org.springframework.beans.factory.annotation.Autowired;
 
 @Scheduled("checkUserQuoteScheduler")
 @Slf4j
 public class CheckUserQuoteScheduler implements Job {
 
-    @Inject
+    @Autowired
     private BillingDAO billingDAO;
-    @Inject
+    @Autowired
     private EnvironmentService environmentService;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/billing/BillingScheduler.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/billing/BillingScheduler.java
index fbc369c..ccc793c 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/billing/BillingScheduler.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/billing/BillingScheduler.java
@@ -26,6 +26,7 @@ import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
+import org.springframework.beans.factory.annotation.Autowired;
 
 @Scheduled("billingScheduler")
 @Slf4j
@@ -34,7 +35,7 @@ public class BillingScheduler implements Job {
     private final BillingService billingService;
     private final SecurityService securityService;
 
-    @Inject
+    @Autowired
     public BillingScheduler(BillingService billingService, SecurityService securityService) {
         this.billingService = billingService;
         this.securityService = securityService;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/computational/StartComputationalJob.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/computational/StartComputationalJob.java
index a554315..0215d3d 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/computational/StartComputationalJob.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/computational/StartComputationalJob.java
@@ -25,6 +25,7 @@ import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * There realized integration with Quartz scheduler framework and defined start computational resource scheduler job
@@ -34,7 +35,7 @@ import org.quartz.JobExecutionContext;
 @Scheduled("startComputationalScheduler")
 public class StartComputationalJob implements Job {
 
-    @Inject
+    @Autowired
     private SchedulerJobService schedulerJobService;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/computational/StopComputationalJob.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/computational/StopComputationalJob.java
index fb94af5..fd6307b 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/computational/StopComputationalJob.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/computational/StopComputationalJob.java
@@ -24,6 +24,7 @@ import com.epam.datalab.backendapi.service.SchedulerJobService;
 import com.google.inject.Inject;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * There realized integration with Quartz scheduler framework and defined stop computational resource scheduler job
@@ -32,7 +33,7 @@ import org.quartz.JobExecutionContext;
 @Scheduled("stopComputationalScheduler")
 public class StopComputationalJob implements Job {
 
-    @Inject
+    @Autowired
     private SchedulerJobService schedulerJobService;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/computational/TerminateComputationalJob.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/computational/TerminateComputationalJob.java
index c69b37a..6e22ad5 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/computational/TerminateComputationalJob.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/computational/TerminateComputationalJob.java
@@ -24,12 +24,13 @@ import com.epam.datalab.backendapi.service.SchedulerJobService;
 import com.google.inject.Inject;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
+import org.springframework.beans.factory.annotation.Autowired;
 
 @Scheduled("terminateComputationalScheduler")
 public class TerminateComputationalJob implements Job {
     private final SchedulerJobService schedulerJobService;
 
-    @Inject
+    @Autowired
     public TerminateComputationalJob(SchedulerJobService schedulerJobService) {
         this.schedulerJobService = schedulerJobService;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/endpoint/CheckEndpointStatusScheduler.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/endpoint/CheckEndpointStatusScheduler.java
index f88050a..4f30fbf 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/endpoint/CheckEndpointStatusScheduler.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/endpoint/CheckEndpointStatusScheduler.java
@@ -28,14 +28,15 @@ import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
+import org.springframework.beans.factory.annotation.Autowired;
 
 @Scheduled("checkEndpointStatusScheduler")
 @Slf4j
 public class CheckEndpointStatusScheduler implements Job {
 
-    @Inject
+    @Autowired
     private EndpointService endpointService;
-    @Inject
+    @Autowired
     private SecurityService securityService;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/exploratory/StartExploratoryJob.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/exploratory/StartExploratoryJob.java
index a3c732b..d0a95b4 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/exploratory/StartExploratoryJob.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/exploratory/StartExploratoryJob.java
@@ -25,6 +25,7 @@ import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * There realized integration with Quartz scheduler framework and defined start exploratory scheduler job which
@@ -34,7 +35,7 @@ import org.quartz.JobExecutionContext;
 @Scheduled("startExploratoryScheduler")
 public class StartExploratoryJob implements Job {
 
-    @Inject
+    @Autowired
     private SchedulerJobService schedulerJobService;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/exploratory/StopExploratoryJob.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/exploratory/StopExploratoryJob.java
index f3fdb63..e4b0d2b 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/exploratory/StopExploratoryJob.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/exploratory/StopExploratoryJob.java
@@ -25,6 +25,7 @@ import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * There realized integration with Quartz scheduler framework and defined stop exploratory scheduler job which
@@ -34,7 +35,7 @@ import org.quartz.JobExecutionContext;
 @Scheduled("stopExploratoryScheduler")
 public class StopExploratoryJob implements Job {
 
-    @Inject
+    @Autowired
     private SchedulerJobService schedulerJobService;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/ApplicationSettingServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/ApplicationSettingServiceImpl.java
index 1e28bc1..45202bf 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/ApplicationSettingServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/ApplicationSettingServiceImpl.java
@@ -22,11 +22,12 @@ package com.epam.datalab.backendapi.service;
 import com.epam.datalab.backendapi.dao.MongoSetting;
 import com.epam.datalab.backendapi.dao.SettingsDAO;
 import com.google.inject.Inject;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.Map;
 
 public class ApplicationSettingServiceImpl implements ApplicationSettingService {
-    @Inject
+    @Autowired
     private SettingsDAO settingsDAO;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/KeycloakServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/KeycloakServiceImpl.java
index f418e65..dac6376 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/KeycloakServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/KeycloakServiceImpl.java
@@ -19,15 +19,17 @@
 
 package com.epam.datalab.backendapi.service;
 
+import com.epam.datalab.backendapi.conf.KeycloakConfiguration;
 import com.epam.datalab.backendapi.conf.SelfServiceApplicationConfiguration;
 import com.epam.datalab.backendapi.dao.SecurityDAO;
 import com.epam.datalab.backendapi.util.KeycloakUtil;
 import com.epam.datalab.exceptions.DatalabException;
-import com.google.inject.Inject;
-import de.ahus1.keycloak.dropwizard.KeycloakConfiguration;
 import lombok.extern.slf4j.Slf4j;
 import org.glassfish.jersey.internal.util.Base64;
+import org.keycloak.KeycloakPrincipal;
+import org.keycloak.KeycloakSecurityContext;
 import org.keycloak.representations.AccessTokenResponse;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.client.Client;
 import javax.ws.rs.client.Entity;
@@ -44,13 +46,15 @@ public class KeycloakServiceImpl implements KeycloakService {
     private final KeycloakConfiguration conf;
     private final SecurityDAO securityDAO;
     private final String redirectUri;
+    private Object principal;
 
-    @Inject
+    @Autowired
     public KeycloakServiceImpl(Client httpClient, SelfServiceApplicationConfiguration conf, SecurityDAO securityDAO) {
         this.httpClient = httpClient;
         this.conf = conf.getKeycloakConfiguration();
         this.securityDAO = securityDAO;
-        this.redirectUri = conf.getKeycloakConfiguration().getRedirectUri();
+        //this.redirectUri = conf.getKeycloakConfiguration().getRedirectUri();
+        this.redirectUri = "";
     }
 
     @Override
@@ -80,9 +84,13 @@ public class KeycloakServiceImpl implements KeycloakService {
     }
 
     private AccessTokenResponse requestToken(Form requestForm) {
-        final String credentials = Base64.encodeAsString(String.join(":", conf.getResource(),
-                String.valueOf(conf.getCredentials().get("secret"))));
-        String url = conf.getAuthServerUrl() + String.format(URI, conf.getRealm());
+        KeycloakPrincipal<KeycloakSecurityContext> kp = (KeycloakPrincipal<KeycloakSecurityContext>) principal;
+        final String credentials = Base64.encodeAsString(String.join(":", kp.getKeycloakSecurityContext().getIdTokenString(),
+                String.valueOf(kp.getKeycloakSecurityContext().getToken().getResourceAccess().get("secret"))));
+        kp.getKeycloakSecurityContext().getToken().getResourceAccess("ds");
+
+        //String url = conf.getAuthServerUrl() + String.format(URI, kp.getKeycloakSecurityContext().getRealm());
+        String url = "0";
         String header = "Basic " + credentials;
         final Response response =
                 httpClient.target(url)
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/SecurityServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/SecurityServiceImpl.java
index cde3edf..8c7584a 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/SecurityServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/SecurityServiceImpl.java
@@ -27,13 +27,14 @@ import com.epam.datalab.backendapi.util.KeycloakUtil;
 import com.epam.datalab.exceptions.DatalabException;
 import com.google.inject.Inject;
 import org.keycloak.representations.AccessTokenResponse;
+import org.springframework.beans.factory.annotation.Autowired;
 
 public class SecurityServiceImpl implements SecurityService {
     private final KeycloakService keycloakService;
     private final SecurityDAO securityDAO;
     private final AuditService auditService;
 
-    @Inject
+    @Autowired
     public SecurityServiceImpl(KeycloakService keycloakService, SecurityDAO securityDAO, AuditService auditService) {
         this.keycloakService = keycloakService;
         this.securityDAO = securityDAO;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/TagServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/TagServiceImpl.java
index 891b599..76e57f9 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/TagServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/TagServiceImpl.java
@@ -21,12 +21,13 @@ package com.epam.datalab.backendapi.service;
 
 import com.epam.datalab.auth.UserInfo;
 import com.google.inject.Singleton;
+import org.springframework.context.annotation.Scope;
 
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 
-@Singleton
+@Scope("singleton")
 public class TagServiceImpl implements TagService {
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/UserRoleServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/UserRoleServiceImpl.java
index c182662..3994e11 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/UserRoleServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/UserRoleServiceImpl.java
@@ -23,16 +23,18 @@ import com.epam.datalab.backendapi.resources.dto.UserRoleDTO;
 import com.epam.datalab.exceptions.ResourceNotFoundException;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
 
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
-@Singleton
+@Scope("singleton")
 public class UserRoleServiceImpl implements UserRoleService {
     private static final String ROLE_NOT_FOUND_MSG = "Any of role : %s were not found";
 
-    @Inject
+    @Autowired
     private UserRoleDAO userRoleDao;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/UserSettingServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/UserSettingServiceImpl.java
index 20be82e..039ed09 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/UserSettingServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/UserSettingServiceImpl.java
@@ -23,12 +23,14 @@ import com.epam.datalab.backendapi.dao.UserSettingsDAO;
 import com.epam.datalab.backendapi.resources.dto.UserDTO;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
 
 import java.util.List;
 
-@Singleton
+@Scope("singleton")
 public class UserSettingServiceImpl implements UserSettingService {
-    @Inject
+    @Autowired
     private UserSettingsDAO settingsDAO;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/AccessKeyServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/AccessKeyServiceImpl.java
index d9c119e..55c7708 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/AccessKeyServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/AccessKeyServiceImpl.java
@@ -30,14 +30,16 @@ import com.jcraft.jsch.JSch;
 import com.jcraft.jsch.JSchException;
 import com.jcraft.jsch.KeyPair;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 
-@Singleton
+@Scope("singleton")
 @Slf4j
 public class AccessKeyServiceImpl implements AccessKeyService {
-    @Inject
+    @Autowired
     private SelfServiceApplicationConfiguration configuration;
 
 
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/AuditServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/AuditServiceImpl.java
index 161bf2b..d28d1ef 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/AuditServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/AuditServiceImpl.java
@@ -25,6 +25,7 @@ import com.epam.datalab.backendapi.domain.AuditDTO;
 import com.epam.datalab.backendapi.domain.AuditPaginationDTO;
 import com.epam.datalab.backendapi.service.AuditService;
 import com.google.inject.Inject;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.List;
 
@@ -33,7 +34,7 @@ import static com.epam.datalab.backendapi.domain.AuditActionEnum.FOLLOW_LINK;
 public class AuditServiceImpl implements AuditService {
     private final AuditDAO auditDAO;
 
-    @Inject
+    @Autowired
     public AuditServiceImpl(AuditDAO auditDAO) {
         this.auditDAO = auditDAO;
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/BackupServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/BackupServiceImpl.java
index cfd42a0..4ae6cdf 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/BackupServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/BackupServiceImpl.java
@@ -32,17 +32,19 @@ import com.epam.datalab.rest.contracts.BackupAPI;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import com.google.inject.name.Named;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
 
 import java.util.List;
 
-@Singleton
+@Scope("singleton")
 public class BackupServiceImpl implements BackupService {
 
-    @Inject
+    @Autowired
     @Named(ServiceConsts.PROVISIONING_SERVICE_NAME)
     private RESTService provisioningService;
 
-    @Inject
+    @Autowired
     private BackupDAO backupDao;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/BillingServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/BillingServiceImpl.java
index a0217c0..5f831f9 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/BillingServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/BillingServiceImpl.java
@@ -51,6 +51,7 @@ import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.http.client.utils.URIBuilder;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.core.GenericType;
 import java.math.BigDecimal;
@@ -77,7 +78,7 @@ public class BillingServiceImpl implements BillingService {
     private final BillingDAO billingDAO;
     private final ExploratoryDAO exploratoryDAO;
 
-    @Inject
+    @Autowired
     public BillingServiceImpl(ProjectService projectService, ProjectDAO projectDAO, EndpointService endpointService,
                               ExploratoryService exploratoryService, SelfServiceApplicationConfiguration configuration,
                               @Named(ServiceConsts.BILLING_SERVICE_NAME) RESTService billingService,
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/BucketServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/BucketServiceImpl.java
index f52497f..a89eb68 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/BucketServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/BucketServiceImpl.java
@@ -40,6 +40,7 @@ import org.apache.commons.io.IOUtils;
 import org.apache.http.HttpStatus;
 import org.glassfish.jersey.media.multipart.FormDataMultiPart;
 import org.glassfish.jersey.media.multipart.file.StreamDataBodyPart;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
@@ -71,7 +72,7 @@ public class BucketServiceImpl implements BucketService {
     private final EndpointService endpointService;
     private final RESTService provisioningService;
 
-    @Inject
+    @Autowired
     public BucketServiceImpl(EndpointService endpointService, @Named(ServiceConsts.BUCKET_SERVICE_NAME) RESTService provisioningService) {
         this.endpointService = endpointService;
         this.provisioningService = provisioningService;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ComputationalServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ComputationalServiceImpl.java
index 2595c21..a54bf6c 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ComputationalServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ComputationalServiceImpl.java
@@ -49,6 +49,7 @@ import com.google.inject.Singleton;
 import com.google.inject.name.Named;
 import com.mongodb.client.result.UpdateResult;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -87,7 +88,7 @@ public class ComputationalServiceImpl implements ComputationalService {
     private final EndpointService endpointService;
     private final InfrastructureTemplateService templateService;
 
-    @Inject
+    @Autowired
     public ComputationalServiceImpl(ProjectService projectService, ExploratoryDAO exploratoryDAO, ComputationalDAO computationalDAO,
                                     @Named(ServiceConsts.PROVISIONING_SERVICE_NAME) RESTService provisioningService,
                                     RequestBuilder requestBuilder, RequestId requestId, TagService tagService,
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EndpointServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EndpointServiceImpl.java
index 77ce551..d8c66de 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EndpointServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EndpointServiceImpl.java
@@ -43,6 +43,7 @@ import com.epam.datalab.rest.client.RESTService;
 import com.google.inject.Inject;
 import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.core.Response;
 import java.util.Arrays;
@@ -67,7 +68,7 @@ public class EndpointServiceImpl implements EndpointService {
     private final UserRoleDAO userRoleDao;
     private final OdahuService odahuService;
 
-    @Inject
+    @Autowired
     public EndpointServiceImpl(EndpointDAO endpointDAO, ProjectService projectService, ExploratoryDAO exploratoryDAO,
                                @Named(ServiceConsts.PROVISIONING_SERVICE_NAME) RESTService provisioningService,
                                UserRoleDAO userRoleDao, OdahuService odahuService) {
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImpl.java
index 2f23861..f8fe94a 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImpl.java
@@ -40,6 +40,7 @@ import com.epam.datalab.model.ResourceEnum;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Scope;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -50,7 +51,7 @@ import static com.epam.datalab.backendapi.resources.dto.UserDTO.Status.NOT_ACTIV
 import static com.epam.datalab.dto.UserInstanceStatus.*;
 import static com.epam.datalab.rest.contracts.ComputationalAPI.AUDIT_MESSAGE;
 
-@Singleton
+@Scope("singleton")
 @Slf4j
 public class EnvironmentServiceImpl implements EnvironmentService {
     private static final String ERROR_MSG_FORMAT = "Can not %s environment because on of user resource is in status CREATING or STARTING";
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ExploratoryServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ExploratoryServiceImpl.java
index 60d4c84..f1585a0 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ExploratoryServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ExploratoryServiceImpl.java
@@ -47,6 +47,8 @@ import com.google.inject.Singleton;
 import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -57,7 +59,7 @@ import static com.epam.datalab.dto.UserInstanceStatus.*;
 import static com.epam.datalab.rest.contracts.ExploratoryAPI.*;
 
 @Slf4j
-@Singleton
+@Scope("singleton")
 public class ExploratoryServiceImpl implements ExploratoryService {
     private final ProjectService projectService;
     private final ExploratoryDAO exploratoryDAO;
@@ -72,7 +74,7 @@ public class ExploratoryServiceImpl implements ExploratoryService {
     private final AuditService auditService;
     private final SelfServiceApplicationConfiguration configuration;
 
-    @Inject
+    @Autowired
     public ExploratoryServiceImpl(ProjectService projectService, ExploratoryDAO exploratoryDAO, ComputationalDAO computationalDAO, GitCredsDAO gitCredsDAO,
                                   ImageExploratoryDAO imageExploratoryDao, @Named(ServiceConsts.PROVISIONING_SERVICE_NAME) RESTService provisioningService,
                                   RequestBuilder requestBuilder, RequestId requestId, TagService tagService, EndpointService endpointService, AuditService auditService,
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/GitCredentialServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/GitCredentialServiceImpl.java
index a8540ac..abc4b2a 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/GitCredentialServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/GitCredentialServiceImpl.java
@@ -40,6 +40,7 @@ import com.google.inject.Singleton;
 import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.stream.Collectors;
 
@@ -52,18 +53,18 @@ import static com.epam.datalab.rest.contracts.ExploratoryAPI.EXPLORATORY_GIT_CRE
 public class GitCredentialServiceImpl implements GitCredentialService {
 
     private static final boolean CLEAR_USER_PASSWORD = true;
-    @Inject
+    @Autowired
     private GitCredsDAO gitCredsDAO;
-    @Inject
+    @Autowired
     private ExploratoryDAO exploratoryDAO;
-    @Inject
+    @Autowired
     @Named(ServiceConsts.PROVISIONING_SERVICE_NAME)
     private RESTService provisioningService;
-    @Inject
+    @Autowired
     private RequestBuilder requestBuilder;
-    @Inject
+    @Autowired
     private RequestId requestId;
-    @Inject
+    @Autowired
     private EndpointService endpointService;
 
     @Audit(action = UPDATE, type = GIT_ACCOUNT)
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/GuacamoleServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/GuacamoleServiceImpl.java
index 80534fe..fc0e14e 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/GuacamoleServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/GuacamoleServiceImpl.java
@@ -35,13 +35,15 @@ import org.apache.guacamole.net.InetGuacamoleSocket;
 import org.apache.guacamole.net.SimpleGuacamoleTunnel;
 import org.apache.guacamole.protocol.ConfiguredGuacamoleSocket;
 import org.apache.guacamole.protocol.GuacamoleConfiguration;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
 
 import javax.inject.Named;
 import java.net.URI;
 import java.util.Map;
 
 @Slf4j
-@Singleton
+@Scope("singleton")
 public class GuacamoleServiceImpl implements GuacamoleService {
 
     private static final String PRIVATE_KEY_PARAM_NAME = "private-key";
@@ -52,7 +54,7 @@ public class GuacamoleServiceImpl implements GuacamoleService {
     private final RESTService provisioningService;
     private final EndpointService endpointService;
 
-    @Inject
+    @Autowired
     public GuacamoleServiceImpl(SelfServiceApplicationConfiguration conf,
                                 @Named(ServiceConsts.PROVISIONING_SERVICE_NAME) RESTService provisioningService,
                                 EndpointService endpointService) {
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ImageExploratoryServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ImageExploratoryServiceImpl.java
index 8c68021..7a343a5 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ImageExploratoryServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ImageExploratoryServiceImpl.java
@@ -52,6 +52,8 @@ import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
 
 import java.util.List;
 import java.util.Map;
@@ -61,26 +63,26 @@ import java.util.stream.Collectors;
 import static com.epam.datalab.backendapi.domain.AuditActionEnum.CREATE;
 import static com.epam.datalab.backendapi.domain.AuditResourceTypeEnum.IMAGE;
 
-@Singleton
+@Scope("singleton")
 @Slf4j
 public class ImageExploratoryServiceImpl implements ImageExploratoryService {
     private static final String IMAGE_EXISTS_MSG = "Image with name %s is already exist in project %s";
     private static final String IMAGE_NOT_FOUND_MSG = "Image with name %s was not found for user %s";
 
-    @Inject
+    @Autowired
     private ExploratoryDAO exploratoryDAO;
-    @Inject
+    @Autowired
     private ImageExploratoryDAO imageExploratoryDao;
-    @Inject
+    @Autowired
     private ExploratoryLibDAO libDAO;
-    @Inject
+    @Autowired
     @Named(ServiceConsts.PROVISIONING_SERVICE_NAME)
     private RESTService provisioningService;
-    @Inject
+    @Autowired
     private RequestBuilder requestBuilder;
-    @Inject
+    @Autowired
     private EndpointService endpointService;
-    @Inject
+    @Autowired
     private ProjectService projectService;
 
     @Audit(action = CREATE, type = IMAGE)
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InactivityServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InactivityServiceImpl.java
index 96fb050..911460c 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InactivityServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InactivityServiceImpl.java
@@ -39,27 +39,28 @@ import com.epam.datalab.rest.contracts.InfrasctructureAPI;
 import com.google.inject.Inject;
 import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.time.LocalDateTime;
 
 @Slf4j
 public class InactivityServiceImpl implements InactivityService {
-    @Inject
+    @Autowired
     private ExploratoryDAO exploratoryDAO;
-    @Inject
+    @Autowired
     private ComputationalDAO computationalDAO;
-    @Inject
+    @Autowired
     private EnvDAO envDAO;
-    @Inject
+    @Autowired
     private RequestBuilder requestBuilder;
-    @Inject
+    @Autowired
     @Named(ServiceConsts.PROVISIONING_SERVICE_NAME)
     private RESTService provisioningService;
-    @Inject
+    @Autowired
     private RequestId requestId;
-    @Inject
+    @Autowired
     private SecurityService securityService;
-    @Inject
+    @Autowired
     private EndpointService endpointService;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
index 2aca621..1227a35 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
@@ -48,6 +48,7 @@ import com.google.inject.Inject;
 import com.google.inject.name.Named;
 import com.jcabi.manifests.Manifests;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -72,7 +73,7 @@ public class InfrastructureInfoServiceImpl implements InfrastructureInfoService
     private final RequestId requestId;
 
 
-    @Inject
+    @Autowired
     public InfrastructureInfoServiceImpl(ExploratoryDAO expDAO, SelfServiceApplicationConfiguration configuration, ProjectService projectService,
                                          EndpointService endpointService, BillingService billingService, RequestBuilder requestBuilder,
                                          @Named(ServiceConsts.PROVISIONING_SERVICE_NAME) RESTService provisioningService, RequestId requestId) {
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureTemplateServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureTemplateServiceImpl.java
index da13cf1..f4f13d6 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureTemplateServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureTemplateServiceImpl.java
@@ -47,6 +47,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.google.inject.Inject;
 import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.Arrays;
 import java.util.List;
@@ -68,7 +69,7 @@ public class InfrastructureTemplateServiceImpl implements InfrastructureTemplate
     private final EndpointService endpointService;
     private final RESTService provisioningService;
 
-    @Inject
+    @Autowired
     public InfrastructureTemplateServiceImpl(SelfServiceApplicationConfiguration configuration, SettingsDAO settingsDAO,
                                              ProjectDAO projectDAO, EndpointService endpointService,
                                              UserGroupDAO userGroupDao, GpuDAO gpuDAO,
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/LibraryServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/LibraryServiceImpl.java
index cfc5e6c..91d06b9 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/LibraryServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/LibraryServiceImpl.java
@@ -53,6 +53,7 @@ import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
+import org.springframework.context.annotation.Scope;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -66,7 +67,7 @@ import static com.epam.datalab.dto.LibraryGroups.*;
 
 
 @Slf4j
-@Singleton
+@Scope("singleton")
 public class LibraryServiceImpl implements LibraryService {
     private static final String COMPUTATIONAL_NOT_FOUND_MSG = "Computational with name %s was not found";
     private static final String LIB_ALREADY_INSTALLED = "Library %s is already installing";
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/MavenCentralLibraryService.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/MavenCentralLibraryService.java
index 26569cc..f390d3f 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/MavenCentralLibraryService.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/MavenCentralLibraryService.java
@@ -28,13 +28,14 @@ import com.epam.datalab.rest.client.RESTService;
 import com.google.inject.Singleton;
 import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Scope;
 
 import javax.inject.Inject;
 import java.net.URI;
 
 import static java.lang.String.join;
 
-@Singleton
+@Scope("singleton")
 @Slf4j
 public class MavenCentralLibraryService implements ExternalLibraryService {
 
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/OdahuServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/OdahuServiceImpl.java
index a581811..49ace95 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/OdahuServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/OdahuServiceImpl.java
@@ -42,6 +42,7 @@ import com.epam.datalab.rest.client.RESTService;
 import com.google.inject.Inject;
 import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.Arrays;
 import java.util.HashMap;
@@ -74,7 +75,7 @@ public class OdahuServiceImpl implements OdahuService {
 	private final RequestBuilder requestBuilder;
 	private final RequestId requestId;
 
-	@Inject
+	@Autowired
 	public OdahuServiceImpl(ProjectService projectService, EndpointService endpointService, OdahuDAO odahuDAO,
 	                        @Named(ServiceConsts.PROVISIONING_SERVICE_NAME) RESTService provisioningService,
 	                        RequestBuilder requestBuilder, RequestId requestId) {
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ProjectServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ProjectServiceImpl.java
index c910ed9..89db72c 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ProjectServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ProjectServiceImpl.java
@@ -40,6 +40,7 @@ import com.epam.datalab.rest.client.RESTService;
 import com.google.inject.Inject;
 import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.*;
 import java.util.function.Supplier;
@@ -83,7 +84,7 @@ public class ProjectServiceImpl implements ProjectService {
     private final OdahuService odahuService;
 
 
-    @Inject
+    @Autowired
     public ProjectServiceImpl(ProjectDAO projectDAO, ExploratoryService exploratoryService,
                               UserGroupDAO userGroupDAO,
                               @Named(ServiceConsts.PROVISIONING_SERVICE_NAME) RESTService provisioningService,
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ReuploadKeyServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ReuploadKeyServiceImpl.java
index 093ac7f..10c46e2 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ReuploadKeyServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ReuploadKeyServiceImpl.java
@@ -35,6 +35,7 @@ import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import static com.epam.datalab.constants.ServiceConsts.PROVISIONING_SERVICE_NAME;
 import static com.epam.datalab.dto.UserInstanceStatus.RUNNING;
@@ -43,18 +44,18 @@ import static com.epam.datalab.dto.UserInstanceStatus.RUNNING;
 @Slf4j
 public class ReuploadKeyServiceImpl implements ReuploadKeyService {
 
-    @Inject
+    @Autowired
     @Named(PROVISIONING_SERVICE_NAME)
     private RESTService provisioningService;
-    @Inject
+    @Autowired
     private RequestBuilder requestBuilder;
-    @Inject
+    @Autowired
     private RequestId requestId;
-    @Inject
+    @Autowired
     private ExploratoryService exploratoryService;
-    @Inject
+    @Autowired
     private ComputationalDAO computationalDAO;
-    @Inject
+    @Autowired
     private ExploratoryDAO exploratoryDAO;
 
     private static final String REUPLOAD_KEY_UPDATE_MSG = "Reuploading key process is successfully finished. " +
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/SchedulerJobServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/SchedulerJobServiceImpl.java
index 546a044..56a452a 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/SchedulerJobServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/SchedulerJobServiceImpl.java
@@ -47,6 +47,8 @@ import com.google.inject.Singleton;
 import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
 
 import java.time.DayOfWeek;
 import java.time.LocalDate;
@@ -80,37 +82,37 @@ import static java.util.Collections.singletonList;
 import static java.util.Date.from;
 
 @Slf4j
-@Singleton
+@Scope("singleton")
 public class SchedulerJobServiceImpl implements SchedulerJobService {
     private static final String SCHEDULER_NOT_FOUND_MSG = "Scheduler job data not found for user %s with exploratory %s";
     private static final String AUDIT_MESSAGE = "Scheduled action, requested for notebook %s";
     private static final long ALLOWED_INACTIVITY_MINUTES = 1L;
 
-    @Inject
+    @Autowired
     private SchedulerJobDAO schedulerJobDAO;
 
-    @Inject
+    @Autowired
     private ExploratoryDAO exploratoryDAO;
 
-    @Inject
+    @Autowired
     private ComputationalDAO computationalDAO;
 
-    @Inject
+    @Autowired
     private ExploratoryService exploratoryService;
 
-    @Inject
+    @Autowired
     private ComputationalService computationalService;
 
-    @Inject
+    @Autowired
     private SecurityService securityService;
 
-    @Inject
+    @Autowired
     private EnvDAO envDAO;
 
-    @Inject
+    @Autowired
     private RequestId requestId;
 
-    @Inject
+    @Autowired
     @Named(PROVISIONING_SERVICE_NAME)
     private RESTService provisioningService;
 
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/SystemInfoServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/SystemInfoServiceImpl.java
index 9a8e064..7b7fd7f 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/SystemInfoServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/SystemInfoServiceImpl.java
@@ -25,6 +25,7 @@ import com.epam.datalab.model.systeminfo.MemoryInfo;
 import com.epam.datalab.model.systeminfo.OsInfo;
 import com.epam.datalab.model.systeminfo.ProcessorInfo;
 import com.google.inject.Inject;
+import org.springframework.beans.factory.annotation.Autowired;
 import oshi.SystemInfo;
 import oshi.hardware.CentralProcessor;
 import oshi.hardware.GlobalMemory;
@@ -38,7 +39,7 @@ import java.util.stream.Collectors;
 
 public class SystemInfoServiceImpl implements SystemInfoService {
 
-    @Inject
+    @Autowired
     private SystemInfo si;
 
     @Override
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/UserGroupServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/UserGroupServiceImpl.java
index 528a958..952fb5e 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/UserGroupServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/UserGroupServiceImpl.java
@@ -41,6 +41,7 @@ import com.epam.datalab.exceptions.ResourceNotFoundException;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Scope;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -55,7 +56,7 @@ import static com.epam.datalab.backendapi.domain.AuditActionEnum.DELETE;
 import static com.epam.datalab.backendapi.domain.AuditActionEnum.UPDATE;
 import static com.epam.datalab.backendapi.domain.AuditResourceTypeEnum.GROUP;
 
-@Singleton
+@Scope("singleton")
 @Slf4j
 public class UserGroupServiceImpl implements UserGroupService {
     private static final String AUDIT_ADD_ROLE_MESSAGE = "Add role(s): %s\n";
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/servlet/guacamole/GuacamoleServlet.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/servlet/guacamole/GuacamoleServlet.java
index 5cce713..6fbcf4c 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/servlet/guacamole/GuacamoleServlet.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/servlet/guacamole/GuacamoleServlet.java
@@ -32,6 +32,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.guacamole.net.GuacamoleTunnel;
 import org.apache.guacamole.servlet.GuacamoleHTTPTunnelServlet;
 import org.apache.http.HttpStatus;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -48,7 +49,7 @@ public class GuacamoleServlet extends GuacamoleHTTPTunnelServlet {
     private final SecurityDAO securityDAO;
     private static final String AUTH_HEADER_PREFIX = "Bearer ";
 
-    @Inject
+    @Autowired
     public GuacamoleServlet(GuacamoleService guacamoleService, ObjectMapper mapper, SecurityDAO securityDAO) {
         this.mapper = mapper;
         this.guacamoleService = guacamoleService;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/util/BillingUtils.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/util/BillingUtils.java
index fe9575f..0b03d46 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/util/BillingUtils.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/util/BillingUtils.java
@@ -25,7 +25,7 @@ import com.epam.datalab.dto.UserInstanceDTO;
 import com.epam.datalab.dto.UserInstanceStatus;
 import com.epam.datalab.dto.base.DataEngineType;
 import com.epam.datalab.dto.computational.UserComputationalResource;
-import jersey.repackaged.com.google.common.collect.Lists;
+import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/util/RequestBuilder.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/util/RequestBuilder.java
index 7b1ea0a..110e535 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/util/RequestBuilder.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/util/RequestBuilder.java
@@ -66,6 +66,8 @@ import com.epam.datalab.util.UsernameUtils;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
 
 import java.util.List;
 import java.util.Map;
@@ -73,15 +75,15 @@ import java.util.UUID;
 
 import static com.epam.datalab.cloud.CloudProvider.*;
 
-@Singleton
+@Scope("singleton")
 @Slf4j
 public class RequestBuilder {
     private static final String UNSUPPORTED_CLOUD_PROVIDER_MESSAGE = "Unsupported cloud provider ";
     private static final String AZURE_REFRESH_TOKEN_KEY = "refresh_token";
 
-    @Inject
+    @Autowired
     private SelfServiceApplicationConfiguration configuration;
-    @Inject
+    @Autowired
     private SettingsDAO settingsDAO;
 
     private CloudSettings cloudSettings(String user, CloudProvider cloudProvider) {
diff --git a/services/self-service/src/test/java/com/epam/datalab/backendapi/resources/TestBase.java b/services/self-service/src/test/java/com/epam/datalab/backendapi/resources/TestBase.java
index 43169b1..915faea 100644
--- a/services/self-service/src/test/java/com/epam/datalab/backendapi/resources/TestBase.java
+++ b/services/self-service/src/test/java/com/epam/datalab/backendapi/resources/TestBase.java
@@ -66,7 +66,7 @@ public class TestBase {
                         .buildAuthFilter()))
                 .addProvider(RolesAllowedDynamicFeature.class)
                 .addProvider(new ResourceNotFoundExceptionMapper())
-                .addProvider(new AuthValueFactoryProvider.Binder<>(UserInfo.class))
+                //.addProvider(new AuthValueFactoryProvider.Binder<>(UserInfo.class))
                 .addProvider(MultiPartFeature.class)
                 .addResource(resourceInstance)
                 .build();

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org