Thursday, 3 September 2015

Spring Boot + Restful Web Service + Spring Security

When we talk about Spring Boot (Simplifying Spring for Everyone) makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files). Now lets see simple example with combination of Spring Boot and Spring Restful Web Service which includes spring security for all our services or API's.
Spring Boot + Restful Web Service + Spring Security



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>

 <groupId>com.app.javadiscover</groupId>
 <artifactId>springbootdemo</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>war</packaging>

 <name>springbootdemo</name>
 <description>Demo project for Spring Boot</description>

 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.2.5.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
 </parent>

 <properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <java.version>1.7</java.version>
 </properties>

 <dependencies>
  
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-ws</artifactId>
  </dependency>
  
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
   <scope>provided</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>


ServletInitializer.java


package com.app.javadiscover;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

 @Override
 protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
  return application.sources(SpringbootdemoApplication.class);
 }
}


SpringbootdemoApplication.java


package com.app.javadiscover;

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

@SpringBootApplication
public class SpringbootdemoApplication {

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


MyController.java


package com.app.javadiscover.controller;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


@Controller
public class MyController {

 @RequestMapping(value="/sayhello/{name}", method=RequestMethod.GET, headers="Accept=application/json")
 public ResponseEntity<String> helloController(@PathVariable String name){
  
  String sayHello = "Hello "+name + " :)";
  
  return new ResponseEntity<String>(sayHello, HttpStatus.OK);
 } 
}


application.properties


security.user.password=springsecuritypassword


Spring Boot + Restful Web Service + Spring Security


OUTPUT:

Hello Java Discover - Spring Boot + Restful Web Service + Spring Security


Please download complete project from this link.

No comments :

Post a Comment