Commit e02c1c34 authored by Narendar Vakiti's avatar Narendar Vakiti

added microservice component eureka client

parent adf5d3b8
This springboot application for implementing rest services
###### **BookStore-API:**
**BookStore-API URL's**
This application is about store books details along with author details and address details. It is only for implementing Rest API's
1. Added EurekaClient to this application
2. Added to Zuul Proxy Server
3. Used Java 8 Features
**Few of BookStore-API URL's**
* http://localhost:8083/getbookdetails
* http://localhost:8083/getauthordetails
......
......@@ -12,10 +12,13 @@
<artifactId>bookstore-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>bookstore-api</name>
<description>Demo project for Spring Boot</description>
<description>Project for Spring Boot - BookStore-API</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
......@@ -25,6 +28,11 @@
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
......@@ -54,7 +62,7 @@
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-log4j -->
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -105,6 +113,18 @@
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
......
......@@ -2,8 +2,10 @@ package com.bookstore;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class BookstoreApiApplication {
public static void main(String[] args) {
......
package com.bookstore.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.persistence.Entity;
import javax.persistence.Table;
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "admin")
public class Admin {
private int adminId;
......
......@@ -38,4 +38,8 @@ public class Book {
@JoinColumn(name = "author_ID")
private Author author;
@ManyToOne
@JoinColumn(name = "admin_ID")
private Admin admin;
}
......@@ -15,7 +15,7 @@ public class BookRequest implements Serializable{
*
*/
private static final long serialVersionUID = -1450252897638356990L;
private int bookId;
private String bookName;
private double bookPrice;
......@@ -24,5 +24,7 @@ public class BookRequest implements Serializable{
private String rating;
private LocalDate publishedDate;
private String authorName;
private String addedBy;
}
package com.bookstore.controller;
import com.bookstore.bean.Admin;
import com.bookstore.service.AdminService;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AdminController {
private static final Logger logger = LoggerFactory.getLogger(AdminController.class);
@Autowired
private AdminService adminService;
@PostMapping("/saveadmin")
public Admin saveAdmin(@RequestBody Admin admin){
Admin adminRes = new Admin();
try{
adminRes = adminService.saveAdmin(admin);
}catch (Exception e){
logger.error("Exception while saving admin details :: "+e.getMessage());
}
return adminRes;
}
}
package com.bookstore.dao;
import com.bookstore.bean.Admin;
import com.bookstore.bean.Author;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
public interface AdminRepository extends JpaRepository<Admin, Integer> {
@Query("SELECT a FROM Admin a WHERE a.name = ?1")
Admin findAdminByName(String adminName);
}
package com.bookstore.service;
import com.bookstore.bean.Admin;
import com.bookstore.dao.AdminRepository;
import org.springframework.beans.factory.annotation.Autowired;
@FunctionalInterface
public interface AdminService{
public Admin saveAdmin(Admin admin);
}
package com.bookstore.service;
import com.bookstore.bean.Admin;
import com.bookstore.dao.AdminRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class AdminServiceImpl implements AdminService{
private static final Logger logger = LoggerFactory.getLogger(AdminServiceImpl.class);
@Autowired
private AdminRepository adminRepository;
@Override
public Admin saveAdmin(Admin admin) {
Admin adminResponse = null;
try{
adminResponse = adminRepository.save(admin);
}catch (Exception e){
logger.error("Exception while saving admin details :: "+e.getMessage());
}
return adminResponse;
}
}
......@@ -6,16 +6,14 @@ import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import com.bookstore.bean.*;
import com.bookstore.dao.AdminRepository;
import com.bookstore.exceptionhandling.BookNotExisted;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.bookstore.bean.Author;
import com.bookstore.bean.BookRequest;
import com.bookstore.bean.Book;
import com.bookstore.bean.Status;
import com.bookstore.dao.AuthorRepository;
import com.bookstore.dao.BookRepository;
import com.google.gson.Gson;
......@@ -29,6 +27,9 @@ public class BookServiceImpl implements BookService{
@Autowired
private AuthorRepository authorRepository;
@Autowired
private AdminRepository adminRepository;
private static final Logger logger = LoggerFactory.getLogger(BookServiceImpl.class);
......@@ -76,6 +77,12 @@ public class BookServiceImpl implements BookService{
}else{
bookStore.setAuthor(author);
}
Admin admin = adminRepository.findAdminByName(book.getAddedBy());
if(author == null){
logger.info("Admin is not existed with name :: "+book.getAddedBy());
}else{
bookStore.setAdmin(admin);
}
Book books = bookRepository.save(bookStore);
status = new Status("Book details are added successfully", true);
if(books == null){
......
spring:
application:
name: bookstore-api
eureka:
client:
serviceUrl:
defaultZone: ${EUREKA_URI:http://localhost:8761/eureka}
instance:
preferIpAddress: true
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment