In the world of web development, creating powerful and dynamic applications requires a combination of a robust backend language and a flexible frontend framework. Java and Angular fit this bill perfectly, offering a powerful duo for building feature-rich web applications. In this guide, we’ll explore how to use Java and Angular together to create a full-stack web application. We’ll provide code examples along the way to help you get started.

Prerequisites:

  • Basic understanding of Java programming.
  • Familiarity with TypeScript and Angular concepts.
  • Java Development Kit (JDK) installed.
  • Node.js and Angular CLI installed.

Part 1: Setting Up the Backend with Java

  1. Choose a Framework: We’ll use Spring Boot, a popular Java framework, for our backend. Spring Boot simplifies application setup, configuration, and development.
  2. Project Setup: Create a new Spring Boot project using Spring Initializr (https://start.spring.io/). Include dependencies like “Spring Web” for REST API development.
  3. Create a Controller: Create a Java class representing a controller that handles API endpoints. For example:
@RestController
@RequestMapping("/api")
public class UserController {
    // Inject your service here

    @GetMapping("/users")
    public List<User> getUsers() {
        // Call your service to get users
    }
}

Part 2: Building the Frontend with Angular

  1. Angular Project Setup: Create a new Angular project using Angular CLI. Open a terminal and run:

    ng new my-angular-app

  2. Create a Component: Create a component to display the user data retrieved from the backend. Run:

    ng generate component user-list

  3. Fetch Data from Backend: Inside the component, use Angular’s
    HttpClient

    module to fetch data from the Java backend:

import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-user-list',
  templateUrl: './user-list.component.html',
  styleUrls: ['./user-list.component.css']
})
export class UserListComponent implements OnInit {
  users: any[] = [];

  constructor(private http: HttpClient) {}

  ngOnInit(): void {
    this.http.get('/api/users').subscribe((data: any) => {
      this.users = data;
    });
  }
}

 

Part 3: Connecting Backend and Frontend

  1. Enable CORS: To allow communication between the Java backend and the Angular frontend, configure Cross-Origin Resource Sharing (CORS) in your Spring Boot application:
    @Configuration
    public class CorsConfig implements WebMvcConfigurer {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/api/**")
                .allowedOrigins("http://localhost:4200") // Adjust frontend URL
                .allowedMethods("GET", "POST", "PUT", "DELETE");
        }
    }
  2. Angular Service: Create an Angular service to encapsulate the HTTP requests to the backend:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class UserService {
  constructor(private http: HttpClient) {}

  getUsers() {
    return this.http.get('/api/users');
  }
}

 

Part 4: Running the Applications

  1. Backend: Build and run your Spring Boot application using your preferred build tool (Maven or Gradle).
  2. Frontend: Navigate to your Angular project directory and run:

ng serve

Access the app in your browser at

http://localhost:4200

.

Conclusion

Combining Java’s powerful backend capabilities with Angular’s dynamic frontend framework allows you to create modern, efficient, and user-friendly web applications. By following this guide and adapting the provided code examples to your specific needs, you can successfully build full-stack applications that leverage the strengths of both technologies. Happy coding!