Angular environment with java backend server app setup

Install Angular toolchain

Before you can start working with angular you need to install nodejs and npm. Your angular development will mostly rely on those two tools.


You need to install typescript, in which your you will write code.

$ npm install -g typescript

Angular is a tool for building web & desktop oriented multi-platform client applications. Angular comprise of all development tools to build fully featured web application. To build standalone desktop applications with native functionalities running on Windows, iOS or  Linux you can integrate your angular app with Electron platform.


After initial installation of npm you install angular cli (command line interface) to speed up development.

$ npm install -g @angular/cli@latest

Update CLI tools to latest version

You need to uninstall previous version and install latest version again.

$ npm uninstall -g @angular/cli $ npm cache clean $ npm install -g @angular/cli@latest $ ng -v

On the end you can check installed version with “ng -v” command.

Visual studio code

Best code editor & debugger for angular/typescript/javascript.

Create new angular application scaffold

If you create client side and server side application it is wise to create single parent folder for both part of application and divide it with two folders (server and client for example).

To create new application structure for angular web application, go to “client” application folder and create new application:

$ ng new app_name

To generate new application with build in support for SCSS CSS styles support:

$ ng new app_name –style=scss

To change existing app to support SCSS styles:

$ ng set defaults.styleExt=scss

Serve application in development

Application will be compiled and local node server will serve it at http://localhost:4200 address.

$ ng serve

Java Spring boot server app and Angular client app setup

If you develop Java spring boot server application to serve JSON services on it, on embedded tomcat server for example, and running it at address localhost:8080,  but your client app is served on localhost:4200 address, than you will need some sort of proxy to overcome cross site request forgery limitations. In that case you define proxy on your angular client application. That way all your requests from angular application to the server addresses beginning with  localhost:4200**/api** suffix will be redirected to tomcat server running on 8080 port.

Setup proxy address

Create proxy-conf.json file like this (there is only one path redirection definition “/api” ) :

{ “/api”: { “target”: “http://localhost:8080”, “secure”: false } }

In your package.json file define new start command for npm:

… “scripts”: { “ng”: “ng”, “start”: “ng serve –proxy-config proxy-conf.json”,

Startup angular client app

Don’t forget to use “npm start” instead of “ng serve” to run angular application that way.

$ npm start

Now you can start debugging  process on your java server app directly from your angular client app.

For example your java service is named “greeting” and you publish it under “http://localhost:8080/api/greeting” path. When you load it from angular web page your address will be “http://localhost:4200/api/greeting” and because you use proxy redirection your request will arrive on tomcat server.

How to run arbitrary command with “npm”

To run an arbitrary command from package’s scripts object use “npm run”.

$npm run “command_from_scripts_section”

This is useful if you use IDE with terminal command window, you can run REST server directly from your angular project folder for example.

Add “java -jar project.jar” command to package.json:

“scripts”: { “ng”: “ng”, “start”: “ng serve –proxy-config proxy-conf.json”, “build”: “ng build”, “test”: “ng test”, “lint”: “ng lint”, “e2e”: “ng e2e”, “server”: “java -jar ../../server/SpringBootMyApp/target/myapp-0.0.1-SNAPSHOT.jar” },

Now if you run “server” command with npm run, you will start “java -jar …” command:

$ npm run server

Here I describe how to prepare your java spring boot project as executable jar.