Repository: jhipster/generator-jhipster (ts)

Issue:
incorrect webpack proxy config when using capital letters in the project name
<!--
- Please follow the issue template below for bug reports.
- If you have a support request rather than a bug, please use [Stack Overflow](http://stackoverflow.com/questions/tagged/jhipster) with the JHipster tag.
- For bug reports it is mandatory to run the command `jhipster info` in your project's root folder, <details>
<summary>JDL entity definitions</summary>

<pre>

</pre>
</details>


##### **Environment and Tools**

java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

git version 2.17.1

node: v10.15.3

npm: 6.4.1

yeoman: 2.0.5

yarn: 1.13.0

Docker version 18.09.3, build 774a1f4

docker-compose version 1.23.2, build 1110ad01
<details>
<summary>.yo-rc.json file</summary>
<pre>
{
  "generator-jhipster": {
    "promptValues": {
      "packageName": "com.demo",
      "nativeLanguage": "en",
      "microservicePath": "/home/amr/work/demo/demoCalendarBackend"
    },
    "jhipsterVersion": "5.8.2",
    "applicationType": "gateway",
    "baseName": "demoFrontend",
    "packageName": "com.demo",
    "packageFolder": "com/demo",
    "serverPort": "8080",
    "authenticationType": "jwt",
    "cacheProvider": "hazelcast",
    "enableHibernateCache": true,
    "websocket": "spring-websocket",
    "databaseType": "sql",
    "devDatabaseType": "h2Disk",
    "prodDatabaseType": "mariadb",
    "searchEngine": false,
    "messageBroker": false,
    "serviceDiscoveryType": "consul",
    "buildTool": "maven",
    "enableSwaggerCodegen": true,
    "clientFramework": "angularX",
    "useSass": true,
    "clientPackageManager": "npm",
    "testFrameworks": [],
    "jhiPrefix": "jhi",
    "entitySuffix": "",
    "dtoSuffix": "DTO",
    "otherModules": [],
    "enableTranslation": true,
    "nativeLanguage": "en",
    "languages": [
      "en",
      "fr"
    ]
  }
}
</pre>
</details>

- Tickets opened without any of these pieces of information will be **closed** without any explanation.
-->

##### **Overview of the issue**

<!-- Explain the bug, if an error is being thrown a stack trace helps -->

Simply generate a new microservice project and name it something like demo**M**icroservice, when generating an entity from the microservice gateway the proxy will be named demo**m**icroservice

<!-- Explain why this is a bug for you -->
all the requests to the APIs from demoMicroservice will be 404
##### **Reproduce the error**

- Create a microservice application with a capital letter in the name
- generate any entity -demo-
- create a microservice gateway
- inside the gateway, run jhipster entity demo
- select "Do you want to generate this entity from an existing microservice?" => Y
- chose the demoMicroservice created earlier
- observe "webpack/webpack.dev.js", it will have a proxy entry named "demomicroservice" with a small m
- try to call the entity API, note that you'll get a 404 

<!-- For bug reports, an unambiguous set of steps to reproduce the error -->

##### **Related issues**

<!-- Has a similar issue been reported before? Please search both closed & open issues -->

##### **Suggest a Fix**

If someone can point me to the part of the code (or documentation, depending on how we decide to fix it) I would happily do.

##### **JHipster Version(s)**

<!--
Which version of JHipster are you using, is it a regression?
-->
5.8.2
##### **JHipster configuration**

<!--
To provide all information we need, you should run `jhipster info` in the project root folder, and
copy/paste the result here.
The `.yo-rc.json` file generated in the root folder is mandatory for bug reports. This will help us to replicate the scenario.
You should remove any sensitive information like the rememberMe key or the jwtSecretKey key.
-->

##### **Entity configuration(s) `entityName.json` files generated in the `.jhipster` directory**

<!--
If the error is during an entity creation or associated with a specific entity.
If you are using JDL, please share that configuration as well.
-->

##### **Browsers and Operating System**

<!-- What OS are you on? is this a problem with all browsers or only IE8? -->

-   [x] Checking this box is mandatory (this is just to show you read everything)

<!-- Love JHipster? Please consider supporting our collective:
👉  https://opencollective.com/generator-jhipster/donate -->


Pull request:
Force lowercase for consul microservice application names
This fixes gateway routes for consul microservices with uppercase in their names
fix #9435

-   [ ] [Travis tests](https://travis-ci.org/jhipster/generator-jhipster/pull_requests) are green
-   [ ] Tests are added where necessary
-   [ ] Documentation is added/updated where necessary
-   [ ] Coding Rules & Commit Guidelines as per our [CONTRIBUTING.md document](https://github.com/jhipster/generator-jhipster/blob/master/CONTRIBUTING.md) are followed


Patch:
diff --git a/generators/client/templates/react/package.json.ejs b/generators/client/templates/react/package.json.ejs
index 4367c0d913..b48eee17ad 100644
--- a/generators/client/templates/react/package.json.ejs
+++ b/generators/client/templates/react/package.json.ejs
@@ -27,25 +27,27 @@ limitations under the License.
     "node_modules"
   ],
   "dependencies": {
-    "@fortawesome/fontawesome-svg-core": "1.2.17",
-    "@fortawesome/free-solid-svg-icons": "5.8.1",
+    "@fortawesome/fontawesome-svg-core": "1.2.15",
+    "@fortawesome/free-solid-svg-icons": "5.7.2",
     "@fortawesome/react-fontawesome": "0.1.4",
-    "availity-reactstrap-validation": "2.5.1",
+    "availity-reactstrap-validation": "2.5.0",
     "axios": "0.18.0",
     "bootstrap": "4.3.1",
     "loaders.css": "0.1.2",
     "lodash": "4.17.11",
     "moment": "2.24.0",
-    "react": "16.8.5",
-    "react-dom": "16.8.5",
-    "react-hot-loader": "4.8.0",
+    "react": "16.8.3",
+    "react-transition-group": "2.5.3",
+    "react-dom": "16.8.3",
+    "react-hot-loader": "4.7.1",
     "react-jhipster": "0.7.0",
     "react-loadable": "5.5.0",
     "react-redux": "6.0.1",
     "react-redux-loading-bar": "4.2.0",
-    "react-router-dom": "5.0.0",
+    "react-router": "4.3.1",
+    "react-router-dom": "4.3.1",
     "react-toastify": "4.5.2",
-    "react-transition-group": "2.7.0",
+    "react-transition-group": "2.5.3",
     "reactstrap": "7.1.0",
     "redux": "4.0.1",
     "redux-devtools": "3.5.0",
@@ -54,35 +56,34 @@ limitations under the License.
     "redux-promise-middleware": "6.1.0",
     "redux-thunk": "2.3.0",
     <%_ if (websocket === 'spring-websocket') { _%>
-    "rxjs": "6.4.0",
+    "rxjs": "5.5.12",
     "sockjs-client": "1.3.0",
+    "webstomp-client": "1.2.6",
     <%_ } _%>
     "tslib": "1.9.3",
-    "uuid": "3.3.2"<% if (websocket === 'spring-websocket') { %>,
-    "webstomp-client": "1.2.6"
-    <%_ } _%>
+    "uuid": "3.3.2"
   },
   "devDependencies": {
     <%_ if (protractorTests) { _%>
     "@types/chai": "4.1.7",
     <%_ } _%>
-    "@types/enzyme": "3.9.1",
-    "@types/jest": "24.0.11",
-    "@types/lodash": "4.14.123",
+    "@types/enzyme": "3.9.0",
+    "@types/jest": "24.0.6",
+    "@types/lodash": "4.14.121",
     <%_ if (protractorTests) { _%>
     "@types/mocha": "5.2.6",
     <%_ } _%>
-    "@types/node": "10.14.3",
-    "@types/react": "16.8.8",
-    "@types/react-dom": "16.8.3",
+    "@types/node": "10.12.27",
+    "@types/react": "16.8.4",
+    "@types/react-dom": "16.8.2",
     "@types/react-redux": "6.0.6",
     "@types/react-router-dom": "4.3.1",
     "@types/redux": "3.6.31",
     <%_ if (protractorTests) { _%>
     "@types/selenium-webdriver": "3.0.15",
     <%_ } _%>
-    "@types/webpack-env": "1.13.9",
-    "autoprefixer": "9.5.0",
+    "@types/webpack-env": "1.13.7",
+    "autoprefixer": "9.4.9",
     "base-href-webpack-plugin": "2.0.0",
     "browser-sync": "2.26.3",
     "browser-sync-webpack-plugin": "2.2.2",
@@ -91,15 +92,15 @@ limitations under the License.
     "chai": "4.2.0",
     "chai-as-promised": "7.1.1",
     <%_ } _%>
-    "copy-webpack-plugin": "5.0.2",
-    "core-js": "3.0.0",
+    "copy-webpack-plugin": "5.0.0",
+    "core-js": "2.6.5",
     "cross-env": "5.2.0",
-    "css-loader": "2.1.1",
+    "css-loader": "2.1.0",
     "enzyme": "3.9.0",
-    "enzyme-adapter-react-16": "1.11.2",
+    "enzyme-adapter-react-16": "1.9.1",
     "enzyme-to-json": "3.3.5",
     "file-loader": "3.0.1",
-    "fork-ts-checker-webpack-plugin": "1.0.0",
+    "fork-ts-checker-webpack-plugin": "0.5.2",
     "friendly-errors-webpack-plugin": "1.7.0",
     "generator-jhipster": "<%= packagejs.version %>",
     "html-webpack-plugin": "3.2.0",
@@ -107,19 +108,19 @@ limitations under the License.
     "husky": "1.3.1",
     <%_ } _%>
     "identity-obj-proxy": "3.0.0",
-    "jest": "24.5.0",
+    "jest": "24.1.0",
     "jest-junit": "6.3.0",
     "jest-sonar-reporter": "2.0.0",
     "json-loader": "0.5.7",
     <%_ if (!skipCommitHook) { _%>
-    "lint-staged": "8.1.5",
+    "lint-staged": "8.1.4",
     <%_ } _%>
     <%_ if (enableTranslation) { _%>
     "merge-jsons-webpack-plugin": "1.0.18",
     <%_ } _%>
     "mini-css-extract-plugin": "0.5.0",
     <%_ if (protractorTests) { _%>
-    "mocha": "6.0.2",
+    "mocha": "6.0.1",
     <%_ } _%>
     "moment-locales-webpack-plugin": "1.0.7",
     "optimize-css-assets-webpack-plugin": "5.0.1",
@@ -131,13 +132,10 @@ limitations under the License.
     "react-infinite-scroller": "1.2.4",
     "redux-mock-store": "1.5.3",
     "rimraf": "2.6.3",
-    <%_ if (websocket === 'spring-websocket') { _%>
-    "rxjs-tslint": "0.1.7",
-    <%_ } _%>
-    "sass": "1.17.3",
+    "sass": "1.17.2",
     "sass-loader": "7.1.0",
     "simple-progress-webpack-plugin": "1.1.2",
-    "sinon": "7.3.0",
+    "sinon": "7.2.4",
     "source-map-loader": "0.2.4",
     "sourcemap-istanbul-instrumenter-loader": "0.2.0",
     "stripcomment-loader": "0.1.0",
@@ -152,20 +150,20 @@ limitations under the License.
     "ts-jest": "24.0.0",
     "ts-loader": "5.3.3",
     <%_ if (protractorTests) { _%>
-    "ts-node": "8.0.3",
+    "ts-node": "8.0.2",
     <%_ } _%>
-    "tslint": "5.14.0",
+    "tslint": "5.13.0",
     "tslint-config-prettier": "1.18.0",
     "tslint-eslint-rules": "5.4.0",
     "tslint-loader": "3.6.0",
     "tslint-react": "3.6.0",
-    "typescript": "3.3.4000",
+    "typescript": "3.3.3333",
     "webpack": "4.28.4",
-    "webpack-cli": "3.3.0",
+    "webpack-cli": "3.2.3",
     "webpack-dev-server": "3.2.1",
     "webpack-merge": "4.2.1",
     "webpack-notifier": "1.7.0",
-    "workbox-webpack-plugin": "4.1.1",
+    "workbox-webpack-plugin": "3.6.3",
     "write-file-webpack-plugin": "4.5.0"<% if (buildTool === 'maven') { %>,
     "xml2js": "0.4.19"<% } %>
   },
diff --git a/generators/client/templates/react/src/main/webapp/app/config/websocket-middleware.ts.ejs b/generators/client/templates/react/src/main/webapp/app/config/websocket-middleware.ts.ejs
index 0c7929c386..893352dcc9 100644
--- a/generators/client/templates/react/src/main/webapp/app/config/websocket-middleware.ts.ejs
+++ b/generators/client/templates/react/src/main/webapp/app/config/websocket-middleware.ts.ejs
@@ -20,9 +20,8 @@ import SockJS from 'sockjs-client';
 
 import Stomp from 'webstomp-client';
 import { Observable } from 'rxjs'; // tslint:disable-line
-<%_ if (authenticationType !== 'session') { _%>
+import { Observer } from 'rxjs/Observer'; // tslint:disable-line
 import { Storage } from 'react-jhipster';
-<%_ } _%>
 
 import { ACTION_TYPES as ADMIN_ACTIONS } from 'app/modules/administration/administration.reducer';
 import { ACTION_TYPES as AUTH_ACTIONS } from 'app/shared/reducers/authentication';
@@ -37,7 +36,7 @@ let subscriber = null;
 let connection: Promise<any>;
 let connectedPromise: any = null;
 let listener: Observable<any>;
-let listenerObserver: any;
+let listenerObserver: Observer<any>;
 let alreadyConnectedOnce = false;
 
 const createConnection = (): Promise<any> => new Promise((resolve, reject) => (connectedPromise = resolve));
@@ -115,6 +114,7 @@ const disconnect = () => {
 
 const receive = () => listener;
 
+
 const unsubscribe = () => {
   if (subscriber !== null) {
     subscriber.unsubscribe();
diff --git a/generators/client/templates/react/tslint.json.ejs b/generators/client/templates/react/tslint.json.ejs
index 41379dc9c2..6c6d1149f1 100644
--- a/generators/client/templates/react/tslint.json.ejs
+++ b/generators/client/templates/react/tslint.json.ejs
@@ -224,12 +224,8 @@
 
     "jsx-boolean-value": [true, "never"],
     "jsx-no-multiline-js": false,
-    "jsx-alignment": false<% if (websocket === 'spring-websocket') { %>,
-    "rxjs-collapse-imports": true,
-    "rxjs-pipeable-operators-only": true,
-    "rxjs-no-static-observable-methods": true,
-    "rxjs-proper-imports": true
-    <%_ } _%>
+    "jsx-alignment": false
+
   },
-  "rulesDirectory": [<% if (websocket === 'spring-websocket') { %>"node_modules/rxjs-tslint"<% } %>]
+  "rulesDirectory": []
 }
diff --git a/generators/server/files.js b/generators/server/files.js
index 9b6ca80f7f..63ce6c46b9 100644
--- a/generators/server/files.js
+++ b/generators/server/files.js
@@ -785,6 +785,10 @@ const serverFiles = {
                     file: 'package/aop/logging/LoggingAspect.java',
                     renameTo: generator => `${generator.javaDir}aop/logging/LoggingAspect.java`
                 },
+                {
+                    file: 'package/config/lazy/LazyInitBeanFactoryPostProcessor.java',
+                    renameTo: generator => `${generator.javaDir}config/lazy/LazyInitBeanFactoryPostProcessor.java`
+                },
                 {
                     file: 'package/config/DefaultProfileUtil.java',
                     renameTo: generator => `${generator.javaDir}config/DefaultProfileUtil.java`
diff --git a/generators/server/templates/build.gradle.ejs b/generators/server/templates/build.gradle.ejs
index a2480e8507..1d4550f08a 100644
--- a/generators/server/templates/build.gradle.ejs
+++ b/generators/server/templates/build.gradle.ejs
@@ -435,6 +435,7 @@ dependencies {
     <%_ } _%>
     <%_ if (authenticationType === 'uaa') { _%>
     implementation "org.springframework.security.oauth:spring-security-oauth2"
+    implementation "org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure"
     implementation "org.springframework.security:spring-security-jwt"
     <%_ } _%>
     <%_ if (databaseType === 'mongodb') { _%>
diff --git a/generators/server/templates/pom.xml.ejs b/generators/server/templates/pom.xml.ejs
index 8cfacb1943..8e346d12ac 100644
--- a/generators/server/templates/pom.xml.ejs
+++ b/generators/server/templates/pom.xml.ejs
@@ -604,6 +604,10 @@
             <groupId>org.springframework.security.oauth</groupId>
             <artifactId>spring-security-oauth2</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.security.oauth.boot</groupId>
+            <artifactId>spring-security-oauth2-autoconfigure</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.springframework.security</groupId>
             <artifactId>spring-security-jwt</artifactId>
@@ -1648,13 +1652,6 @@
                     <name>m2e.version</name>
                 </property>
             </activation>
-            <dependencies>
-                <!-- The following dependency is added due to issue #9175-->
-                <dependency>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-undertow</artifactId>
-                </dependency>
-            </dependencies>
             <build>
                 <pluginManagement>
                     <plugins>
diff --git a/generators/server/templates/src/main/java/package/config/lazy/LazyInitBeanFactoryPostProcessor.java.ejs b/generators/server/templates/src/main/java/package/config/lazy/LazyInitBeanFactoryPostProcessor.java.ejs
new file mode 100644
index 0000000000..4f19ed7a47
--- /dev/null
+++ b/generators/server/templates/src/main/java/package/config/lazy/LazyInitBeanFactoryPostProcessor.java.ejs
@@ -0,0 +1,78 @@
+<%#
+ Copyright 2013-2019 the original author or authors from the JHipster project.
+
+ This file is part of the JHipster project, see https://www.jhipster.tech/
+ for more information.
+
+ Licensed 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  <%=packageName%>.config.lazy;
+
+import io.github.jhipster.config.JHipsterConstants;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+<%_ if (applicationType === 'gateway') { _%>
+import org.springframework.cloud.netflix.zuul.ZuulFilterInitializer;
+<%_ } _%>
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
+
+/**
+ * Lazy initialize all Spring Beans, which boosts up start-up performance.
+ *
+ * This class originally comes from https://github.com/dsyer/spring-boot-allocations where it is written
+ * it can be copied on a project.
+ *
+ * As this is an experimental feature, we only recommend to use it in "dev" mode for the moment.
+ */
+@Component
+@Profile(JHipsterConstants.SPRING_PROFILE_DEVELOPMENT)
+public class LazyInitBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
+
+    private Class<?>[] exclusionList = {<% if (applicationType === 'gateway') { %>ZuulFilterInitializer.class<% } %>};
+
+    public LazyInitBeanFactoryPostProcessor() {
+    }
+
+    public LazyInitBeanFactoryPostProcessor(Class<?>[] exclusionList) {
+        this.exclusionList = exclusionList;
+    }
+
+    @Override
+    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
+        throws BeansException {
+
+        // Iterate over all beans, mark them as lazy if they are not in the exclusion list.
+        for (String beanName : beanFactory.getBeanDefinitionNames()) {
+            if (isLazy(beanName, beanFactory)) {
+                BeanDefinition definition = beanFactory.getBeanDefinition(beanName);
+                definition.setLazyInit(true);
+            }
+        }
+    }
+
+    private boolean isLazy(String beanName, ConfigurableListableBeanFactory beanFactory) {
+        if (exclusionList == null || exclusionList.length == 0) {
+            return true;
+        }
+        for (Class<?> clazz : exclusionList) {
+            if (beanFactory.isTypeMatch(beanName, clazz)) {
+                return false;
+            }
+        }
+        return true;
+    }
+}
diff --git a/generators/server/templates/src/main/resources/config/application.yml.ejs b/generators/server/templates/src/main/resources/config/application.yml.ejs
index a34fe69ac2..619644db0c 100644
--- a/generators/server/templates/src/main/resources/config/application.yml.ejs
+++ b/generators/server/templates/src/main/resources/config/application.yml.ejs
@@ -169,7 +169,8 @@ spring:
         consul:
             discovery:
                 healthCheckPath: /management/health
-                instanceId: ${spring.application.name}:${spring.application.instance-id:${random.value}}
+                instanceId: <%= baseName.toLowerCase() %>:${spring.application.instance-id:${random.value}}
+                service-name: <%= baseName.toLowerCase() %>
             config:
                 watch:
                     enabled: false


Test patch:
diff --git a/generators/client/templates/react/src/test/javascript/protractor.conf.js.ejs b/generators/client/templates/react/src/test/javascript/protractor.conf.js.ejs
index d1b57e59b8..3bcdede730 100644
--- a/generators/client/templates/react/src/test/javascript/protractor.conf.js.ejs
+++ b/generators/client/templates/react/src/test/javascript/protractor.conf.js.ejs
@@ -17,6 +17,8 @@
  limitations under the License.
 -%>
 
+const os = require('os');
+
 exports.config = {
   allScriptsTimeout: 20000,
 
@@ -48,7 +50,7 @@ exports.config = {
     reporter: 'spec',
     slow: 3000,
     ui: 'bdd',
-    timeout: 720000
+    timeout: 30000
   },
 
   beforeLaunch () {
diff --git a/generators/client/templates/react/src/test/javascript/spec/app/shared/auth/private-route.spec.tsx.ejs b/generators/client/templates/react/src/test/javascript/spec/app/shared/auth/private-route.spec.tsx.ejs
index 0021719c4b..a872a5fa75 100644
--- a/generators/client/templates/react/src/test/javascript/spec/app/shared/auth/private-route.spec.tsx.ejs
+++ b/generators/client/templates/react/src/test/javascript/spec/app/shared/auth/private-route.spec.tsx.ejs
@@ -70,7 +70,7 @@ describe('private-route component', () => {
         renderFn({
           location: '/'
         })
-      ).html()
+      )
     ).toThrow(Error);
   });
 });
diff --git a/generators/entity-client/templates/react/src/test/javascript/e2e/entities/entity.spec.ts.ejs b/generators/entity-client/templates/react/src/test/javascript/e2e/entities/entity.spec.ts.ejs
index d74ae10380..a9f8a63ff2 100644
--- a/generators/entity-client/templates/react/src/test/javascript/e2e/entities/entity.spec.ts.ejs
+++ b/generators/entity-client/templates/react/src/test/javascript/e2e/entities/entity.spec.ts.ejs
@@ -158,7 +158,7 @@ describe('<%= entityClass %> e2e test', () => {
         }
 
         await create<%= entityClass %>();
-        await <%= entityInstance %>ComponentsPage.waitUntilLoaded();
+        <%= entityInstance %>ComponentsPage.waitUntilLoaded();
         const nbButtonsBeforeCreate = await <%= entityInstance %>ComponentsPage.countDeleteButtons();
         await create<%= entityClass %>();
 
diff --git a/test/utils/expected-files.js b/test/utils/expected-files.js
index bbf91ef265..c0b5bd8373 100644
--- a/test/utils/expected-files.js
+++ b/test/utils/expected-files.js
@@ -161,6 +161,7 @@ const expectedFiles = {
         `${SERVER_MAIN_RES_DIR}i18n/messages.properties`,
         `${SERVER_MAIN_SRC_DIR}com/mycompany/myapp/JhipsterApp.java`,
         `${SERVER_MAIN_SRC_DIR}com/mycompany/myapp/aop/logging/LoggingAspect.java`,
+        `${SERVER_MAIN_SRC_DIR}com/mycompany/myapp/config/lazy/LazyInitBeanFactoryPostProcessor.java`,
         `${SERVER_MAIN_SRC_DIR}com/mycompany/myapp/config/package-info.java`,
         `${SERVER_MAIN_SRC_DIR}com/mycompany/myapp/config/ApplicationProperties.java`,
         `${SERVER_MAIN_SRC_DIR}com/mycompany/myapp/config/AsyncConfiguration.java`,