Can JSF 1.1 be integrated into Spring Boot? [duplicate] - spring

My team currently has an old JSF 1.1 / Spring2 / Weblogic Monolith Application. As we start towards modernizing our application they want us to take our current architecture, as is, and basically shoe horn it into Spring Boot.
We aren't talking about breaking it down into micro-services at this point, but basically a lift from our current setup, taking Weblogic out of the picture, and running it in Spring Boot with Hikari Data Sources.
Can this be easily done? I haven't found a way to do it without extensive code changes and I don't mind suggesting a "Lets break it down into a micro-services in the next Product Increment" approach.
Outside of re-architecting our application (as we plan in the future) or doing quite a lot of code change, are there any other options?

If you do not use JavaEE for Weblogic, you can migrate your application to the Spring Boot easy enough. The main thing is the correct import of configuration, components, resources and properties. See: example.
If you used in your legacy project JPA or even JDBC to rewrite backend to Spring Data is not very difficult.
From my point of view the main difficulty is the JSF version you are using. I would refuse it, because: 1) it is not fully compatible with Spring boot and 2) it is already out of date today. It takes a lot of effort to put it into the Spring Boot and still it will not work completely. If there is no time and resources to change this view technology to another, you will have to finish it to Spring Boot.
I don't see other real alternatives

Related

I am developing a website I know bootstrap and learned spring I want to know what else can be done to make it better?

I want to know what spring dependencies should I use on my website to make the work easy and spring or spring boot which one is better. also, suggest some frontend technologies that I can use to make the website smart.
It's a very broad question. And it all depends on what features you want in your web site. Just listing few basic module to give you some hints.
Spring MVC - For web application with MVC Pattern
Spring Security - To secure your app
Spring ORM - If using any ORM tool like hibernate
You need to explore more on the basis of your need.
Spring Boot vs Spring:
You should use Spring Boot if you are starting new project. Spring Boot came to make development process easier when using Spring Framework. In Spring, developer had to write lots of code to configure beans and dependencies. Spring Boot automated this process so that you no longer do it by yourself but Spring Boot will take care of it. Plus it provides some extra tools (In built Web Server, in Memory DB, tool to monitor and manage Spring Boot App )
Try to create a simple web app in Spring and Spring Boot to understand the difference.
Front-end Technologies:
JavaScript based framework/lib like Angular,React,Vue etc. are the trend for front-end now a days. Again there are pros and cons of each of them. Hence you need to evaluate, what suits you better as per your requirement.

How to apply the Strangler Pattern with old Struts 1 application into Spring app

We currently have an old web application that's been developped under Struts 1.4.3 Framework. This application works fine on a production environment,
but now we need to upgrade it to Spring. Instead of starting a new app as a greenfield project, we figured out that it could be a better idea for our client if we'd apply some transition techniques, such as the Strangler pattern. Then, we could bring some business value quickly to the client during the development process.
So here is our plan:
We will develop new screens one by one (Spring boot web app), and release those screens in production environment once they're ready.
I would like my main entry point to be into our new Spring boot application.
Then, I'd like to commute the requests of the client to whether new developed screen under spring boot controllers, or to old existing Struts 1 actions.
So for the user, the transition from a old to a new application would be 100% transparent
I found some solutions on Internet but none of them seems to give a clear way to proceed.
This article seems really appropriate to my need: https://www.ibm.com/developerworks/library/j-sr2/index.html
But I'm having questions that the article does not answer.
Do Struts and Spring code base have to be within the same Java project in order to use the article's recipes?
The article stated above is 14 years old, so Spring libraries handling the integration of Struts appear to be deprecated. I can't find "org.springframework.web.struts" anymore in Spring framework 4.3.20. How to apply it now?
Thanks guys for your help.

What is meant by Spring boot follows “Opinionated Defaults Configuration” Approach?

I have just started learning spring boot . In its official page I found out this term and I did not understand that what actually it meant in Spring boot context.
Spring Boot just decides on a set of default configured beans which you can override if you want.
For example if you include the spring boot starter pom for jpa, you'll get autoconfigured for you an in memory database, a hibernate entity manager, and a simple datasource. This is an example of an opinionated (Spring's opinion that it's a good starting point) default configuration that you can override.
See https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-replacing-auto-configuration
Spring Boot, is Spring on steroids if you will. It's a great way to get started very quickly with almost the entire Spring stack. I'll try to summarize as what "Opinionated Defaults Configuration" would mean in practice from a programmer's perspective below:
Helps you to setup a fully working application(web app or otherwise) very quickly by providing you intelligent default configurations that you are most likely to be satisfied to start with.
It does so by something called "AutoConfiguration", where capabilities from the Spring ecosystem of products are "auto-magically" enabled in your application by adding certain dependencies to your classpath; adding such dependencies via maven or gradle is super easy.
Most auto-configuration respects your own configuration, and backs off silently if you have provided your own configuration via your own beans.
You would benefit most if you take the java config approach of configuring your Spring application.
Super silky integration of new capabilities in your application by developing your own auto-configuration components (via annotations!).
Tons of auto-configaration components available ranging from Databases(h2, derby etc.), servlet containers(tomact, jetty etc.) to email and websockets are available. It is easy to develop your own. The important thing is that others can use those technology enablements in their own components. Please feel free to contribute.
Helps write very clean code with all the heavy lifting taken care of you, so that you can focus more on your business logic.
Hope you have fun with Spring Boot; its absolutely among the very best of frameworks to have hit the market in the last decade or so.
It follows opinionated default configuration so it reduces the developer efforts. Spring boot always uses sensible opinions, mostly based on the class path contents. So it overrides the default configuration.

Spring or Spring boot

As part of a new web application project, I'm planning to learn Spring. I started to read through the Spring framework reference. While I was googling, I came across Spring boot. What I understood is that spring boot helps to build application much faster than spring by reducing configuration. Now I'm little confused whether should I continue learning spring or jump to spring boot. My intention is to understand how spring works as a framework rather than a few features. So please let me know, as a beginner what should I do? First, learn Spring and then spring boot or vice-versa.
Update
Ok, I know it's a while since I asked this question. I kind of have an answer (personal one)
I started with Spring Boot and so far built one Spring Boot REST application. Yes, as others said, Spring Boot, helps you to get started quickly and being new to some language/technology, I would love to see a working module ASAP. So Spring boot helps you with that.
Later depending on your interest, you can start exploring in-depth how Spring boot does that magic.
So, in summary, go with Spring Boot and then deep dive to understand the underlying concept. Again this is my opinion.
Thanks, everyone for your inputs/suggestions.
If you want to develop web applications especially micro-services, I will recommend that you should learn Spring Boot first.
The first reason is that there are many resources and examples on
web, so you can easily find what you need.
The second reason is that Spring Framework (including Spring Boot) is
suitable for PaaS environment especially Pivotal. Therefore you can
rapidly deploy your applications without too much effort.
First of all, learn how Spring applications work.
Spring applications are based on the Object Relation Model. You need to understand the annotations and why we use them. Then you have to learn how Spring MVC works. Up to here, both Spring and Spring Boot are similar. Basically, Spring Boot is made so that a Spring-based application can be made very easily. Spring Boot is very good framework for the Web and other.
After learning the above things, then you can jump easily onto Spring Boot. However, if you jump directly to Spring Boot you will see there are many such things which are not described in the Spring Boot tutorials, since many of them expect that you have some prior knowledge of Spring.

Spring Boot vs Spring MVC (In depth)

I've got the basic idea of, what both of them are and when they can be used. I've already referred to this question as well. As of now what I understood was:
Spring Boot bundles a war file with server runtime like Tomcat. This allows easy distribution and deployment of web applications. As the industry is moving towards container based deployments, Spring Boot is useful in this context.
Spring MVC is a traditional web application framework that helps you to build web applications.
What I wanted to know is that, what can be the best practice when it comes to web applications and the differences of using either one of them in depth. Any help would be appreciated.

Resources