diff --git a/pom.xml b/pom.xml
index 271b096252..ecec44db58 100755
--- a/pom.xml
+++ b/pom.xml
@@ -91,6 +91,22 @@
                 <artifactId>wicket-guice</artifactId>
                 <version>${wicket.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.wicket</groupId>
+                <artifactId>wicket-spring</artifactId>
+                <version>${wicket.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-web</artifactId>
+                <version>6.1.4</version>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-orm</artifactId>
+                <version>6.1.4</version>
+            </dependency>
 
             <!--  Servlet API, needed for compilation. -->
             <dependency>
diff --git a/view/pom.xml b/view/pom.xml
index c359d76206..c3d712fecd 100644
--- a/view/pom.xml
+++ b/view/pom.xml
@@ -46,6 +46,10 @@
             <groupId>org.apache.wicket</groupId>
             <artifactId>wicket-guice</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.wicket</groupId>
+            <artifactId>wicket-spring</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.wicket</groupId>
             <artifactId>wicket-extensions</artifactId>
@@ -87,6 +91,15 @@
             <version>5.3.2</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-orm</artifactId>
+        </dependency>
+
         <!--  Servlet API, needed for compilation. -->
         <dependency>
             <groupId>jakarta.servlet</groupId>
diff --git a/view/src/main/java/ApplicationBootstrap.java b/view/src/main/java/ApplicationBootstrap.java
index d5631e6f1c..b30d3094af 100644
--- a/view/src/main/java/ApplicationBootstrap.java
+++ b/view/src/main/java/ApplicationBootstrap.java
@@ -1,68 +1,134 @@
-import com.google.inject.AbstractModule;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-import com.google.inject.name.Names;
-import com.google.inject.persist.PersistFilter;
-import com.google.inject.servlet.GuiceServletContextListener;
-import com.google.inject.servlet.ServletModule;
-import org.apache.wicket.guice.GuiceWebApplicationFactory;
-import org.apache.wicket.protocol.http.WicketFilter;
-
+import jakarta.inject.Named;
+import jakarta.inject.Provider;
+import jakarta.inject.Singleton;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
 import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import org.apache.wicket.protocol.http.WicketFilter;
+import org.apache.wicket.spring.injection.annot.SpringComponentInjector;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter;
+import org.springframework.web.WebApplicationInitializer;
+import org.springframework.web.context.ContextLoaderListener;
+import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
+import se.su.dsv.scipro.SciProApplication;
+import se.su.dsv.scipro.gdpr.Reporter;
+import se.su.dsv.scipro.profiles.CurrentProfile;
+import se.su.dsv.scipro.system.Lifecycle;
+import se.su.dsv.scipro.system.ResearchArea;
+import se.su.dsv.scipro.system.User;
+import se.su.dsv.scipro.system.UserImportService;
+import se.su.dsv.scipro.system.UserService;
+import se.su.dsv.scipro.system.UserServiceImpl;
+
+import java.io.IOException;
 import java.net.CookieHandler;
 import java.net.CookieManager;
-import java.time.Clock;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.ServiceLoader;
+import java.nio.file.Path;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
 
-public class ApplicationBootstrap extends GuiceServletContextListener {
+public class ApplicationBootstrap implements WebApplicationInitializer {
     @Override
-    protected Injector getInjector() {
+    public void onStartup(ServletContext servletContext)
+            throws ServletException
+    {
         // preserve cookies when using Jersey which will use the logged in session cookie from
         // Daisy API thus drastically speeding up the batch jobs
         CookieHandler.setDefault(new CookieManager());
-        return Guice.createInjector(
-                new ServletModule() {
-                    @Override
-                    protected void configureServlets() {
-                        final ServletContext servletContext = getServletContext();
-                        final Enumeration<String> initParameterNames = servletContext.getInitParameterNames();
-                        while (initParameterNames.hasMoreElements()) {
-                            final String parameterName = initParameterNames.nextElement();
-                            final String value = servletContext.getInitParameter(parameterName);
-                            bindConstant().annotatedWith(Names.named(parameterName)).to(value);
-                        }
-                    }
-                },
-                new ServletModule() {
-                    @Override
-                    protected void configureServlets() {
-                        filter("/*").through(PersistFilter.class);
-                    }
-                },
-                new AbstractModule() {
-                    @Override
-                    protected void configure() {
-                        bind(Clock.class).toInstance(Clock.systemDefaultZone());
-                        ServiceLoader<Module> modules = ServiceLoader.load(Module.class);
-                        for (Module module : modules) {
-                            install(module);
-                        }
-                    }
-                },
-                new ServletModule() {
-                    @Override
-                    protected void configureServlets() {
-                        Map<String,String> params = new HashMap<>();
-                        params.put(WicketFilter.FILTER_MAPPING_PARAM, "/*");
-                        params.put(WicketFilter.APP_FACT_PARAM, GuiceWebApplicationFactory.class.getName());
-                        params.put("injectorContextAttribute", Injector.class.getName());
-                        filter("/*").through(new WicketFilter(), params);
-                    }
+        AnnotationConfigWebApplicationContext webApplicationContext = new AnnotationConfigWebApplicationContext();
+        webApplicationContext.register(SciProApplication.class);
+        webApplicationContext.register(CurrentProfile.class);
+        webApplicationContext.register(Config.class);
+        webApplicationContext.refresh();
+
+        servletContext.addListener(new ContextLoaderListener(webApplicationContext));
+
+        SciProApplication sciProApplication = webApplicationContext.getBean(SciProApplication.class);
+        sciProApplication.getComponentInstantiationListeners()
+                .add(new SpringComponentInjector(sciProApplication, webApplicationContext));
+
+        servletContext.addFilter("osiv", OpenEntityManagerInViewFilter.class)
+                .addMappingForUrlPatterns(null, false, "/*");
+
+        WicketFilter filter = new WicketFilter(sciProApplication);
+        filter.setFilterPath("");
+
+        servletContext.addFilter("wicket-filter", filter)
+                .addMappingForUrlPatterns(null, true, "/*");
+    }
+
+    @Configuration
+    public static class Config {
+        @Bean
+        @Named("profile")
+        public String test() {
+            return "DEV";
+        }
+
+        @Bean
+        public Lifecycle dummy() {
+            return new Lifecycle() {
+                @Override
+                public void start() {
+
                 }
-        );
+
+                @Override
+                public void stop() {
+
+                }
+            };
+        }
+
+        @Bean
+        public Reporter reporter() {
+            return user -> null;
+        }
+
+        @Bean
+        @Singleton
+        public EntityManagerFactory entityManagerFactory() {
+            System.out.println("Creating EntityManagerFactory");
+            return Persistence.createEntityManagerFactory("defaultPersistenceUnit");
+        }
+
+        @Bean
+        public EntityManager entityManager(EntityManagerFactory entityManagerFactory) {
+            return entityManagerFactory.createEntityManager();
+        }
+
+        @Bean
+        public UserService userService(Provider<EntityManager> entityManagerProvider) {
+            return new UserServiceImpl(entityManagerProvider);
+        }
+
+        @Bean
+        public UserImportService importService() {
+            return new UserImportService() {
+                @Override
+                public Optional<User> importUser(String userName) {
+                    return Optional.empty();
+                }
+
+                @Override
+                public List<ImportableUser> search(String searchTerm) {
+                    return List.of();
+                }
+
+                @Override
+                public void importUser(ImportableUser importableUser) {
+                }
+
+                @Override
+                public Set<ResearchArea> importResearchAreasForSupervisor(User supervisor) {
+                    return Set.of();
+                }
+            };
+        }
     }
 }
diff --git a/view/src/main/java/se/su/dsv/scipro/SciProApplication.java b/view/src/main/java/se/su/dsv/scipro/SciProApplication.java
index e02ddcfc74..896faee0f4 100755
--- a/view/src/main/java/se/su/dsv/scipro/SciProApplication.java
+++ b/view/src/main/java/se/su/dsv/scipro/SciProApplication.java
@@ -334,7 +334,7 @@ public class SciProApplication extends LifecycleManagedWebApplication {
         mountPage("admin/users/import", AdminImportUserPage.class);
         mountPage("admin/users/roles", AdminRolePage.class);
         mountPage("admin/users/switch", AdminSwitchUserPage.class);
-        mountResource("gdpr/report", new GDPRReportResourceReference());
+        //mountResource("gdpr/report", new GDPRReportResourceReference());
     }
 
     private void mountNotificationAndSettingsPages() {
diff --git a/view/src/main/webapp/WEB-INF/web.xml b/view/src/main/webapp/WEB-INF/web.xml
index bf2a938984..c74f86a197 100755
--- a/view/src/main/webapp/WEB-INF/web.xml
+++ b/view/src/main/webapp/WEB-INF/web.xml
@@ -5,15 +5,6 @@
 
     <display-name>SciPro</display-name>
 
-    <filter>
-        <filter-name>guiceFilter</filter-name>
-        <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>guiceFilter</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
     <listener>
         <listener-class>ApplicationBootstrap</listener-class>
     </listener>