DEV Community

Vidhi Jayswal
Vidhi Jayswal

Posted on

Building Responsive Web Applications with React and Java Spring Boot

Creating responsive web applications is essential in today's world where users access websites from a variety of devices and screen sizes. Combining the powerful front-end capabilities of React with the robust back-end framework of Java Spring Boot, you can build scalable and responsive web applications that deliver an exceptional user experience.

Why Use React and Spring Boot?

  • React: A popular JavaScript library for building user interfaces, React allows for the creation of reusable UI components, making it easy to develop dynamic and interactive web applications. React's component-based architecture and virtual DOM make it highly efficient and scalable.

  • Spring Boot: A framework that simplifies the development of Java-based back-end applications, Spring Boot provides a comprehensive infrastructure support for developing microservices. It offers powerful tools for configuration, dependency injection, and security, among other features.

Setting Up Your Development Environment
To get started, you'll need to set up your development environment with Node.js for React and JDK for Spring Boot.

  1. Install Node.js and npm:
  2. Download and install Node.js from the official website.
  3. Verify the installation by running node -v and npm -v in your terminal.

  4. Install Java and Spring Boot:

  5. Download and install the JDK from the official website.

  6. Install Spring Boot CLI by following the instructions on the Spring Boot website.

Creating the React Front-End
Start by creating a new React project using Create React App, a tool that sets up a modern web development environment with no configuration.

npx create-react-app my-react-app
cd my-react-app
npm start
Enter fullscreen mode Exit fullscreen mode

This will create a new React application and start the development server. You can now begin building your responsive UI components.

Building Responsive Components:
React makes it easy to create responsive components using CSS-in-JS libraries like styled-components or by directly using CSS media queries.

import React from 'react';
import styled from 'styled-components';

const Container = styled.div`
  display: flex;
  flex-direction: column;
  padding: 20px;

  @media (min-width: 768px) {
    flex-direction: row;
  }
`;

const Item = styled.div`
  flex: 1;
  margin: 10px;
`;

function App() {
  return (
    <Container>
      <Item>Item 1</Item>
      <Item>Item 2</Item>
      <Item>Item 3</Item>
    </Container>
  );
}

export default App;
Enter fullscreen mode Exit fullscreen mode

Creating the Spring Boot Back-End

Create a new Spring Boot project using Spring Initializr. Choose the necessary dependencies such as Spring Web, Spring Data JPA, and any database connector like MySQL or PostgreSQL.

  1. Initialize the Project:
  2. Visit Spring Initializr.
  3. Select your project metadata and dependencies.
  4. Generate and download the project.

  5. Set Up the Application:

  6. Extract the downloaded project and open it in your preferred IDE. Configure the application properties to connect to your database.

# src/main/resources/application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydatabase
    username: root
    password: password
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

Enter fullscreen mode Exit fullscreen mode
  1. Create RESTful Endpoints: Create a simple REST controller to handle requests from the React front-end.
@RestController
@RequestMapping("/api/products")
public class ProductController {

    @Autowired
    private ProductRepository productRepository;

    @GetMapping
    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }

    @PostMapping
    public Product createProduct(@RequestBody Product product) {
        return productRepository.save(product);
    }
}
Enter fullscreen mode Exit fullscreen mode
  1. Define the Product Entity and Repository:
@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private double price;

    // Getters and setters
}

public interface ProductRepository extends JpaRepository<Product, Long> {
}
Enter fullscreen mode Exit fullscreen mode

Integrating React with Spring Boot
To integrate the React front-end with the Spring Boot back-end, you can use Axios or Fetch API to make HTTP requests to the Spring Boot REST endpoints.

  1. Install Axios in React:
npm install axios
Enter fullscreen mode Exit fullscreen mode
  1. Fetch Data from Spring Boot:
import React, { useEffect, useState } from 'react';
import axios from 'axios';

function App() {
  const [products, setProducts] = useState([]);

  useEffect(() => {
    axios.get('/api/products')
      .then(response => setProducts(response.data))
      .catch(error => console.error('Error fetching data:', error));
  }, []);

  return (
    <div>
      <h1>Product List</h1>
      <ul>
        {products.map(product => (
          <li key={product.id}>{product.name} - ${product.price}</li>
        ))}
      </ul>
    </div>
  );
}

export default App;
Enter fullscreen mode Exit fullscreen mode

Deploying the Application

Once your application is ready, you need to deploy it. There are several options for deploying React and Spring Boot applications, such as:

  • Heroku: A cloud platform that supports deploying both front-end and back-end applications.
  • AWS: Use services like Elastic Beanstalk, S3, and RDS for a scalable deployment solution.
  • Docker: Containerize your applications for easy deployment and scalability.

Conclusion

Building responsive web applications with React and Java Spring Boot leverages the strengths of both technologies to create powerful and scalable solutions. React's flexibility and efficiency in creating dynamic user interfaces, combined with Spring Boot's robust back-end capabilities, enable developers to build modern web applications that can meet diverse user needs. By following best practices and leveraging these powerful frameworks, you can deliver high-quality, responsive web applications that provide an excellent user experience.

Top comments (0)