Saturday, May 25, 2019

13 Spring boot connecting to MongoDB

13 – Spring boot : connecting to MongoDB


Spring boot connection to mongoDB


application.properties

    
#mongodb
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mongotuto
 
#logging
logging.level.org.springframework.data=debug
logging.level.=error
    
  

POM.xml

    

<!--xml version="1.0" encoding="UTF-8"?-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.1.4.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
 </parent>
 <groupId>com.example</groupId>
 <artifactId>SpringBootMongoDB03</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>SpringBootMongoDB03</name>
 <description>Demo project for Spring Boot</description>

 <properties>
  <java.version>1.8</java.version>
 </properties>

 <dependencies>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-mongodb</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <scope>runtime</scope>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
  </dependency>
 </dependencies>

 <build>
  <plugins>
   <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
   </plugin>
  </plugins>
 </build>

</project>
  
  


Application Main class


package com.example.discovery;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootMongoDb03Application {

 public static void main(String[] args) {
  SpringApplication.run(SpringBootMongoDb03Application.class, args);
 }

}


  


Entity Car

package com.example.discovery;

import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "Car")
public class Car {

 @Id 
 public ObjectId _id;
 public String brand;
 public String name;
 public String color;
 
 public Car(ObjectId _id, String name, String brand, String color) {
      this._id = _id;
      this.name = name;
      this.brand = brand;
      this.color = color;
    }

 public ObjectId get_id() {
  return _id;
 }

 public void set_id(ObjectId _id) {
  this._id = _id;
 }

 public String getbrand() {
  return brand;
 }

 public void setbrand(String brand) {
  this.brand = brand;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getcolor() {
  return color;
 }

 public void setcolor(String color) {
  this.color = color;
 }
 
 
}

  



CarRepository

package com.example.discovery;

import org.bson.types.ObjectId;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface CarRepository extends MongoRepository {
   Car findBy_id(ObjectId _id);
 }
  


CarController

package com.example.discovery;

import java.util.List;

import javax.validation.Valid;

import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/cars")
public class CarController {
  @Autowired
  private CarRepository repository;
  
  @RequestMapping(value = "/", method = RequestMethod.GET)
  public List getAllCars() {
    return repository.findAll();
  }
  
  @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  public Car getCarById(@PathVariable("id") ObjectId id) {
    return repository.findBy_id(id);
  }
  
  @RequestMapping(value = "/", method = RequestMethod.POST)
  public Car createCar(@Valid @RequestBody Car Cars) {
    Cars.set_id(ObjectId.get());
    repository.save(Cars);
    return Cars;
  }
  
  @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  public void deleteCar(@PathVariable ObjectId id) {
    repository.delete(repository.findBy_id(id));
  }
  
  @RequestMapping(value = "/{id}", method = RequestMethod.PUT)
  public void modifyCarById(@PathVariable("id") ObjectId id, @Valid @RequestBody Car Cars) {
    Cars.set_id(id);
    repository.save(Cars);
  }
  
 
}

  


This is just a trick, hope it paved your way out. 

Dev Tips#32 Spring boot Maven POM xml line 1 error

Saturday, May 4, 2019

12 - Spring boot Introduction to Unit Testing with JUnit Hello World

12 - Spring boot Introduction to Unit Testing with JUnit Hello World



POM.xml

   
<!--xml version="1.0" encoding="UTF-8"?-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.1.4.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
 </parent>
 <groupId>com.example</groupId>
 <artifactId>TestingTuto12</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>TestingTuto12</name>
 <description>Demo project for Spring Boot</description>

 <properties>
  <java.version>1.8</java.version>
 </properties>

 <dependencies>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <scope>runtime</scope>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
  </dependency>
 </dependencies>

 <build>
  <plugins>
   <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
   </plugin>
  </plugins>
 </build>

</project>

   
  


TestingTuto12Application


package com.example.testingtuto12;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class TestingTuto12Application {

 public static void main(String[] args) {
  SpringApplication.run(TestingTuto12Application.class, args);
 }

}

  


GreetingController


package com.example.testingtuto12;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {
 
 @RequestMapping("/greeting")
 public Boolean sendGreeting() {
  
  return true;
 }

}

  


TestingTuto12ApplicationTests


package com.example.testingtuto12;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestingTuto12ApplicationTests {

 @Test
 public void contextLoads() {
 }
 
 @Autowired
 public GreetingController greetingController;
 @Test
 public void testSendGreeting() {
  
  Boolean greeting = greetingController.sendGreeting();
  //assertEquals(greeting, "Hello World Dude!");
  assertTrue(greeting);
 }
 

}

  


To run the test, right click the testSendGreeting() method and select run as JUnit test as shown below



Wednesday, May 1, 2019

Dev Tips#27 Spring boot error : Eureka Server – Client discovery Unknown...

11 Spring Boot Consuming a microservice with RestTemplate and Eureka

11 - Spring boot Consuming a microservice with RestTemplate and Eureka



Part 1 to install Eureka Server and let it discover the Eureka client


application.properties

  
server.port=8080
spring.application.name=consumer-service

  
  

POM.xml

    

<!--xml version="1.0" encoding="UTF-8"?-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.1.4.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
 </parent>
 <groupId>com.example</groupId>
 <artifactId>Tuto10EurekaClientConsumer</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>Tuto10EurekaClientConsumer</name>
 <description>Demo project for Spring Boot</description>

 <properties>
  <java.version>1.8</java.version>
  <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
 </properties>

 <dependencies>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <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>
   <scope>runtime</scope>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
  </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>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
   </plugin>
  </plugins>
 </build>

</project>

  
  


Tuto10EurekaClientConsumerApplication


package com.example.clientConsumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableEurekaClient
public class Tuto10EurekaClientConsumerApplication {

 public static void main(String[] args) {
  SpringApplication.run(Tuto10EurekaClientConsumerApplication.class, args);
 }
 
    @Bean
    @LoadBalanced
 public RestTemplate restTemplate() {
  
  return new RestTemplate();
 }
}

  


ClientConsumerController


package com.example.clientConsumer;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class ClientConsumerController {
 
 @Autowired
 RestTemplate restTemplate;
 
 @RequestMapping("/consumer")
 public String getClientMessage() {
  
  String url = "http://localhost:8081/hello";
  String url1 = "http://myclient-service/hello";
  String res = restTemplate.getForObject(url1, String.class);
  return "Message : "+res;
 }

}

  


This is just a trick, hope it paved your way out. 


Sunday, April 28, 2019

Dev Tips#26 Close and remove project from Package Explorer in Eclipse SO...

10 Spring Boot Install Eureka Server and Client in STS SOLVED

10 Spring Boot Install Eureka Server and Client in STS SOLVED


Eureka Server




application.properties

  

server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetchRegistry=false
 
  
  

POM.xml

  

<!--xml version="1.0" encoding="UTF-8"?-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.1.4.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
 </parent>
 <groupId>com.example</groupId>
 <artifactId>Tuto10EurekaServer01</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>Tuto10EurekaServer01</name>
 <description>Demo project for Spring Boot</description>

 <properties>
  <java.version>1.8</java.version>
  <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
 </properties>

 <dependencies>
  <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  </dependency>

  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
  </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>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
   </plugin>
  </plugins>
 </build>

</project>

  
  


Tuto10EurekaServer01Application


package com.example.eurekaclient01;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class Tuto10EurekaServer01Application {

 public static void main(String[] args) {
  SpringApplication.run(Tuto10EurekaServer01Application.class, args);
 }

}

  


Eureka Client





application.properties

  
spring.application.name=myclient-service
  
  

POM.xml

  

<!--xml version="1.0" encoding="UTF-8"?-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.1.4.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
 </parent>
 <groupId>com.example</groupId>
 <artifactId>Tuto10EurekaClient01</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>Tuto10EurekaClient01</name>
 <description>Demo project for Spring Boot</description>

 <properties>
  <java.version>1.8</java.version>
  <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
 </properties>

 <dependencies>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <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-starter-test</artifactId>
   <scope>test</scope>
  </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>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
   </plugin>
  </plugins>
 </build>

</project>
 
  
  

Tuto10EurekaClient01Application

package com.example.eurekaclient01;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class Tuto10EurekaClient01Application {

 public static void main(String[] args) {
  SpringApplication.run(Tuto10EurekaClient01Application.class, args);
 }

}
  


MyClient


package com.example.eurekaclient01;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyClient {
 
 @RequestMapping("/hello")
 public String Hello() {
  
  return "Hello world from the client";
 }

}
  


This is just a trick, hope it paved your way out.