Building a new web application with modern tooling has always presented a challenge. You need to address many development concerns like continuous delivery, security and testing; yet, these concerns are often given a lower priority when compared to the development of features. In this course, Scaffolding Spring Boot and Angular Web Apps with JHipster, you will see how JHipster addresses these concerns right at the time of project creation, leveraging the popular Angular framework for the client implementation and Spring Boot framework for the server implementation. You will learn how to generate a web application that includes tooling from development build scripts to production docker configurations. Then, you will see how easy it is to add a new feature to the generated project. Finally, you will exercise the configuration and deployment of the application as a production artifact. When you have finished the course, you should have a foundational understanding of what JHipster is providing you so that you can begin using it for the scaffolding on your next web application.
Michael is a Senior Technical Architect at NVISIA. He's worked in technology for almost twenty years for a variety of clients across several different industries. He has a great passion for teaching and mentoring.
Creating a Project Using the JHipster Generator Hello, my name is Michael Hoffman, in this module I'll demonstrate project creation using the JHipster generator. As the generator is going to prompt you for decisions on what you want created, the goal of this module is for you to understand the impact of these decisions on the final product. JHipster makes many decisions on the scaffolding for you, but not all of them. The tool gives you the opportunity to choose from different options around several key decisions. First, you'll need to define your application meta data. You'll be able to select the type of application you want, enter the application name, and enter the application package name. Next, you need to decide on your method for authentication. You'll be able to select between stateful and stateless options. Then, you'll need to tell JHipster what type of database you're planning to use. JHipster supports both SQL and NoSQL database types. Next, you'll get to select between Gradle and Maven as your server-side build tool. Then, you need to select the client-side framework for your application. You'll have the option of choosing the Angular version 4 framework, or the Angular JS version 1 framework. Finally, you can choose additional test libraries on top of the unit test frameworks that JHipster provides by default. Given this list, you should have some confidence that JHipster is covering all of these important facets of the project for you. Now let's start up our command line session, and see how the generator creates a project.
Customizing Security in a JHipster Project Hello, my name is Michael Hoffman. In this module I'll be demonstrating the first step for adding a new feature to the JHipster generated project. I generated a project in the last module called patient portal. The business case is to allow patients to interact with their physicians in a practice. Eventually this is going to be a full functioning application, but to start with I just want a feature that allows patients to manage their appointments. In this module, we will be focusing on the first step for this new feature. I need a user to be able to log in to the application. The user is a patient in the practice, and they're going to need to enter login information, including their username and password, to gain access to the authenticated portion of the website. As we continue in the course, we will add the ability for this logged in patient to request appointments with their physician. We will also add the ability for the patient to view the appointment requests that they've made. Before we can start working on patient login, let's get the application server started.
Implementing Client Code in a JHipster Project Hello, my name is Michael Hoffman. In this module, I'll be demonstrating the next step for adding a new feature to the JHipster generated project. We're going to start the actual construction of the new feature. Just to recap, the business case is to allow patients to interact with their physicians in a practice. Eventually, this is going to be a full functioning portal, but to start with, I just want a feature that allows patients to manage their appointments. In the previous module, you saw the steps needed to change a security aspect in the JHipster generated project. This was a good exercise as it should have warmed you up to some of the basics of making a change to the code base. We're going to put that new security role name to use in this module. To start with, I want to create a form that allows a patient to request an appointment. The user will need to be logged in and have the new patient role. The second task is to provide a view of all the appointments a user has made. I'm going to keep the data for this form very simple because we want to maintain focus on what JHipster has provided. In this module, I'll be focusing on only the client-side implementation of these tasks. I'll cover the server-side in the next module. Let's start by running webpack again, so that you can get some additional details about it.
Implementing Server Code in a JHipster Project Hi I'm Michael Hoffman. In this module I'll be demonstrating the implementation of server-side code to complete the new feature that we started in the previous module. I'm going to complete the coding for the new feature, but let's quickly recap. The business case is to allow patients to interact with their physicians in a practice. It's eventually going to be a full functioning portal, but to start with we just want a feature that allows patients to manage their appointments. From a log-in perspective, I already have made changes to modify the existing user role to be a patient role. On the server side, I'll be showing you how JHipster handles security concerns, including the log-in. While I initially stubbed out the API, I'm going to replace it with full functionality. The first step will be to add support for persisting new appointments. I'll be implementing the REST controller, service, repository, and database script for appointments. With appointment persistence in place, it will be fairly easy to then replace the API for returning all appointments. Let's start by adding the new appointment schema to our Liquibase scripts.