Recommended deployment mode for Reactjs - java

My application is built on microservices architecture and heavily using spring boot.
we want to add an UI dashboard for our app and chose reactJs as we liked the framework. we are new to reactJs.
unlike backend server packagers, ReactJs has tonnes of tools for packaging such as webpack, gulp, babel, and so on
Coming from spring boot background, wondering if there is any recommended ways to package UI code that doesn't deviate much from existing spring boot?

I have successfully packed UI code into spring boot applications using webjars
build the UI with its own tools
package these into a webjar
in your spring boot app, add a maven dependency to the webjar
add resource mappings to the ui content in the spring config
This works, but I dont use that approach any longer because
you need to build/deploy the backend even for minor UI changes
UI developer need to deal with backend configs and builds
you use expensive server resources, just to serve static content
Instead
build the UI with its own tools
host them somewhere Amazon S3 or CDN

Related

ReactJS proxy URL for localhost API in PROD when bundling with Spring Boot

I'm trying to bundle ReactJS and Spring Boot API together and build one fat jar. In every tutorial I read, I'm told to put the localhost API URL as a proxy in package.json of the React app like below.
"proxy": "http://localhost:8080"
As I obviously don't have PROD deployment experience with this, is this the way to go when you are deploying in PROD? Else, please guide me in the right direction. I couldn't find the answer anywhere.
Also, any cons in doing so in a medium sized project with two developers? Appreciate any input.
The "proxy" field should only be used in development environment when the Webpack dev server is first in line(to enable the Hot-Reload feature)
Here is a guide from 2018:
spring + react guide
regardless there are two main way of hosting the react app:
inside the spring boot Jar a static resource(you can use frontend-maven-plugin to run yarn/ npm again see the guide),
the advantages of this method is security, you don't need CORS enabled to serve the page.
the disadvantages is convenient this solution require more code, also the spring boot server handles UI serving to the client that requires extra calls to the server(spring first approach)
the other option is to host it in a hosting service like amazon S3 and then it will be hosted not in spring but in s3 and will be the first in line(UI first approach), you will need to enable CORS in spring boot app, but this is a more continent solution.
ps. I would read some guides first, it would help you with general understanding

Where can I find a minimal spring boot boilerplate web app with backend and frontend?

I want a barebone template project for a webapp implemented using spring boot (frontend + backend APIs - DB)
I referred this VS Code's doc for working with Java. It worked fine but it is not a complete webapp.
Thanks in advance!
Vaadin Flow is a GUI framework for web apps driven through Spring Boot. (Alternatively, you can base your Vaadin app on Jakarta EE or plain Jakarta Servlet.)
A customized project template can be generated from their "Start building" web page.
You can manage your Vaadin project with either Maven or Gradle.
If you want to generate an app with spring boot + angular/reactjs/vuejs I think that the best solution by far at this moment is JHipster.

Spring and SOA application

I'm new to WEB SOA applications and i have several questions about how to implements this architecture.
I would like to make a SOA based application involving multiple services using spring restfull api.
I'm aware of how to build each service itself.
i've already made a maven based project exposing a restful service using spring boot and secured it using spring security... my problem is to implement several services:
I don't know if i have to make a project for each one or there's a better solution... i want them to communicate through XML/Json so they won't be in same project in my point of view.
All secured by same service which makes use of spring security, i don't know how to link between the security service and the other ones. i don't want to write same security config classes on each project and then the user would be asked for sign in each time he accesses one of the services.
Share some resources which are used by all most services such as domain model classes, since i don't want to copy paste them (make duplicates), if i would change anything i would have to make changes in all services ... horrible :/
Thanks in advance.
1- Secure them all (the entire application) using one service which
make use of spring security and which will be asked for whenever a
client access one of the services.
This link will help you : https://www.youtube.com/watch?v=3s2lSD50-JI
2- Share some resources which are used by all most services such as
domain model classes.
Here it is about how to organize your project in your IDE or in your architecture. Using packages, shared libraries, shared projects or maven modules can help you.
3- Deploy all services inside one " application container ".
Your IDE or Maven should be able to help you deploy you application in a container. In the case of Spring Boot, there is an embedded Tomcat server that can run your application. Or if you have your Tomcat stand alone installation, you can deploy it by your self.
Reading you post, I guess your are new in Spring Boot development. The learning path I can suggest is the following (in my point of view) :
N-Tier Pattern for application architecture, and the purpose of the layers
The architecture of the Web and HTTP protocol
SOA and REST Services
Maven to build and compile your projects
Spring Boot, in mostly moderns architectures used to implement Backends my exposing REST Services
You can find by Googling tones of well explained documentations and blogs concerning those subjects.

Bluemix: Java Rest API starter app

I want to run and deploy a java rest API code on Bluemix. This is more to understand the Devops capabilities in conjunction with API management.
I tried to use this: http://www.codingpedia.org/ama/tutorial-rest-api-design-and-implementation-in-java-with-jersey-and-spring/
But could not push it to Bluemix. May I get some support?
Update:
When I push it to Bluemix, I get an error saying it could not find appropriate runtime.
Reading your comments you are searching for some pointers to create a starter Java REST application (possibly integrating a delivery pipeline).
You can start creating an application on Bluemix using the Liberty for Java runtime. Then you can, from your application dashboard, click on "Add Git" to create a Git repository on IBM Bluemix DevOps Services (IDS). Now you have your starter application running on Bluemix and its code hosted on IDS. You can edit the code directly on the Web IDE of IDS (clicking on "Edit Code") and from there push the new versions of the applcation on Bluemix or you can clone the repository on your local environment (for example using the Eclipse Tools for Bluemix) and deploy directly from your machine to Bluemix.
Using the first option you will be able to quickly setup a delivery pipeline using the "Build & Deploy" button, and use the DevOps capabilities of IDS. The Build & Deploy feature, also known as the pipeline, automates the continuous deployment of your projects. In a project's pipeline, sequences of stages retrieve input and run jobs, such as builds, tests, and deployments.
To add REST capabilities to the sample application you can for example use JAX-RS 2.0. Take a look here.
Javaee jax-rs REST API starter
Use my java REST API starter for bluemix. This uses javaee + jax-rs + swagger
Just fork it, run pom.xml to generate war and push the war file to bluemix. Works like a charm
https://github.com/sanketsw/jax_rs_REST_Example
Spring boot REST API starter for bluemix
if you want a spring boot REST API starter, you can use the following boilerplate. This is a netflix eureka client but you can ignore eureka annotations. The REST API will work seamlessly anyway
https://github.com/sanketsw/Netflix_Eureka_Client_Hello_World
Another cleaner springboot REST API starter is here: https://github.com/sanketsw/SpringBoot_REST_API

Which Java Spring components needed for Spring-WS?

I have Eclipse Kepler installed and working properly on Mac OSX. I'd like to install Spring in order to design, write, deploy a RESTful web service.
I see a plethora of components listed on the update site, and little guidance on what I do/don't need in order to just get started.
Do I need :
SpringSource DM Server Tools?
Spring IDE Core Developer Resources?
Web Flow?
If you have Eclipse installed then just follow the tutorial: Building a RESTful Web Service
http://spring.io/guides/gs/rest-service/
It provides details of the Maven/Gradle configuration that you need which will ensure that the correct dependencies are imported.
Note that it makes use of Spring Boot, which in turn will import dependencies required by Spring MVC. You don't need Spring-WS for REST web services. Spring-WS is for building SOAP web services.

Categories

Resources