Spring MVC REST Application with Maven.
List of packages
java9r.controller.com
ProductController.java
java9r.service.com
ProductService.java
ProductServiceImpl.java
java9r.dao.com
ProductDAO.java
ProductDAOImpl.java
java9r.entities.com
Product.java
ProductController.java
package java9r.controller.com;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
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;
import org.springframework.web.util.UriComponentsBuilder;
import java9r.entities.com.Product;
import java9r.service.com.ProductService;
/**
* @author Ravi
*
*/
@RestController
@RequestMapping("product")
public class ProductController {
@Autowired
ProductService productService;
/**
*
* Retrieve All Products
*/
@RequestMapping(value = "/all/", method = RequestMethod.GET)
public ResponseEntity<List<Product>> listAllProducts() {
List<Product> product = productService.findAll();
if (product.isEmpty()) {
return new ResponseEntity<List<Product>>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<List<Product>>(product, HttpStatus.OK);
}
/**
*
* Retrieve Single Product
*/
@RequestMapping(value = "/findone/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Product> getProduct(@PathVariable("id") long id) {
System.out.println("Fetching Product with id " + id);
Product product = productService.findById(id);
if (product == null) {
System.out.println("Product with id " + id + " not found");
return new ResponseEntity<Product>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<Product>(product, HttpStatus.OK);
}
/**
*
* Retrieve Single Product By Name
*/
@RequestMapping(value = "/name/{name}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Product> getProduct(@PathVariable("name") String name) {
System.out.println("Fetching Product with id " + name);
Product product = productService.findByName(name);
if (product == null) {
System.out.println("Product with id " + name + " not found");
return new ResponseEntity<Product>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<Product>(product, HttpStatus.OK);
}
/**
*
* Create a Product
*/
@RequestMapping(value = "/create", method = RequestMethod.POST)
public ResponseEntity<Void> createProduct(@RequestBody Product product, UriComponentsBuilder ucBuilder) {
System.out.println("Creating Product " + product.getName());
if (productService.isProductExist(product)) {
System.out.println("A Product with name " + product.getName() + " already exist");
return new ResponseEntity<Void>(HttpStatus.CONFLICT);
}
productService.insertProduct(product);
HttpHeaders headers = new HttpHeaders();
headers.setLocation(ucBuilder.path("/all/{id}").buildAndExpand(product.getId()).toUri());
return new ResponseEntity<Void>(headers, HttpStatus.CREATED);
}
/**
*
* Update a Product
*/
@RequestMapping(value = "/update/", method = RequestMethod.POST)
public ResponseEntity<Product> updateProduct(@RequestBody Product product) {
System.out.println("Updating Product " + product.getId());
Product currentProduct = productService.findById(product.getId());
if (currentProduct == null) {
System.out.println("Product with id " + product.getId() + " not found");
return new ResponseEntity<Product>(HttpStatus.NOT_FOUND);
}
currentProduct.setName(product.getName());
currentProduct.setPrice(product.getPrice());
currentProduct.setQuantity(product.getQuantity());
currentProduct.setPhoto(product.getPhoto());
currentProduct.setDescription(product.getDescription());
productService.updateProduct(currentProduct);
return new ResponseEntity<Product>(currentProduct, HttpStatus.OK);
}
/**
*
* Delete a Product
*/
// @RequestMapping(value = "/delete/{id}", method = RequestMethod.DELETE)
@RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
public ResponseEntity<Product> deleteProduct(@PathVariable("id") long id) {
System.out.println("Fetching & Deleting Product with id " + id);
Product product = productService.findById(id);
if (product == null) {
System.out.println("Unable to delete. Product with id " + id + " not found");
return new ResponseEntity<Product>(HttpStatus.NOT_FOUND);
}
productService.deleteProductById(id);
;
return new ResponseEntity<Product>(HttpStatus.NO_CONTENT);
}
/**
*
* Delete All Product
*/
@RequestMapping(value = "/all/", method = RequestMethod.DELETE)
public ResponseEntity<Product> deleteAllProducts() {
System.out.println("Deleting All Products");
productService.deleteAllProducts();
return new ResponseEntity<Product>(HttpStatus.NO_CONTENT);
}
}
ProductService.java
package java9r.service.com;
import java.util.List;
import java9r.entities.com.Product;
/**
* @author Ravi
*
*/
public interface ProductService {
public List<Product> findAll();
Product findById(long id);
Product findByName(String name);
void insertProduct(Product product);
public boolean isProductExist(Product product);
void updateProduct(Product product);
void deleteProductById(long id);
void deleteAllProducts();
}
ProductServiceImpl.java
package java9r.service.com;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Propagation;
import java9r.dao.com.ProductDAO;
import java9r.entities.com.Product;
/**
* @author Ravi
*
*/
@Service("productService")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public class ProductServiceImpl implements ProductService {
@Autowired
ProductDAO productDAO;
@Override
public List<Product> findAll() {
return productDAO.findAll();
}
@Override
public Product findById(long id) {
return productDAO.findById(id);
}
@Override
public Product findByName(String name) {
return productDAO.findByName(name);
}
@Override
public void insertProduct(Product product) {
productDAO.insertProduct(product);
}
@Override
public boolean isProductExist(Product product) {
return productDAO.isProductExist(product);
}
@Override
public void updateProduct(Product product) {
productDAO.updateProduct(product);
}
@Override
public void deleteProductById(long id) {
productDAO.deleteProductById(id);
}
@Override
public void deleteAllProducts() {
productDAO.deleteAllProducts();
}
}
ProductDAO.java
package java9r.dao.com;
import java.util.*;
import java9r.entities.com.Product;
/**
* @author Ravi
*
*/
public interface ProductDAO {
public List<Product> findAll();
Product findById(long id);
Product findByName(String name);
void insertProduct(Product product);
public boolean isProductExist(Product product);
void updateProduct(Product product);
void deleteProductById(long id);
void deleteAllProducts();
}
ProductDAOImpl.java
package java9r.dao.com;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.springframework.stereotype.*;
import java9r.entities.com.Product;
/**
* @author Ravi
*
*/
@Repository
public class ProductDAOImpl implements ProductDAO {
private static List<Product> products;
static {
products = productsData();
}
@Override
public List<Product> findAll() {
return products;
}
@Override
public Product findById(long id) {
for (Product product : products) {
if (product.getId() == id) {
return product;
}
}
return null;
}
@Override
public Product findByName(String name) {
for (Product product : products) {
if (product.getName().equalsIgnoreCase(name)) {
return product;
}
}
return null;
}
@Override
public void insertProduct(Product product) {
products.add(product);
}
@Override
public boolean isProductExist(Product product) {
return findByName(product.getName()) != null;
}
@Override
public void updateProduct(Product product) {
int index = products.indexOf(product);
products.set(index, product);
}
@Override
public void deleteProductById(long id) {
for (Iterator<Product> iterator = products.iterator(); iterator.hasNext();) {
Product product = iterator.next();
if (product.getId() == id) {
iterator.remove();
}
}
}
private static List<Product> productsData() {
List<Product> products = new ArrayList<Product>();
products.add(new Product(1, "product 1", 10, 10000, "product description 1", "product1.jpeg"));
products.add(new Product(2, "product 2", 20, 20000, "product description 2", "product2.jpeg"));
products.add(new Product(3, "product 3", 30, 30000, "product description 3", "product3.jpeg"));
products.add(new Product(4, "product 4", 40, 40000, "product description 4", "product4.jpeg"));
products.add(new Product(5, "product 5", 50, 50000, "product description 5", "product5.jpeg"));
products.add(new Product(6, "product 6", 60, 60000, "product description 6", "product6.jpeg"));
products.add(new Product(7, "product 7", 70, 70000, "product description 7", "product7.jpeg"));
products.add(new Product(8, "product 8", 80, 80000, "product description 8", "product8.jpeg"));
return products;
}
@Override
public void deleteAllProducts() {
products.clear();
}
}
Product.java
package java9r.entities.com;
/**
* @author Ravi
*
*/
public class Product implements java.io.Serializable {
private static final long serialVersionUID = 6866588940548007313L;
private Integer id;
private String name;
private Integer price;
private Integer quantity;
private String description;
private String photo;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public Integer getQuantity() {
return quantity;
}
public void setQuantity(Integer quantity) {
this.quantity = quantity;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getPhoto() {
return photo;
}
public void setPhoto(String photo) {
this.photo = photo;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public Product(Integer id, String name, Integer price, Integer quantity, String description, String photo) {
super();
this.id = id;
this.name = name;
this.price = price;
this.quantity = quantity;
this.description = description;
this.photo = photo;
}
public Product() {
super();
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((description == null) ? 0 : description.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((photo == null) ? 0 : photo.hashCode());
result = prime * result + ((price == null) ? 0 : price.hashCode());
result = prime * result + ((quantity == null) ? 0 : quantity.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Product other = (Product) obj;
if (description == null) {
if (other.description != null)
return false;
} else if (!description.equals(other.description))
return false;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (photo == null) {
if (other.photo != null)
return false;
} else if (!photo.equals(other.photo))
return false;
if (price == null) {
if (other.price != null)
return false;
} else if (!price.equals(other.price))
return false;
if (quantity == null) {
if (other.quantity != null)
return false;
} else if (!quantity.equals(other.quantity))
return false;
return true;
}
@Override
public String toString() {
return "Product [id=" + id + ", name=" + name + ", price=" + price + ", quantity=" + quantity + ", description="
+ description + ", photo=" + photo + "]";
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>SpringMVCRestfulAndAngularjs</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>java9r</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>java9r</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
java9r-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="java9r" />
<mvc:annotation-driven />
<mvc:default-servlet-handler />
</beans>
index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html ng-app="myapp">
<head>
<meta charset="UTF-8">
<title>Angular Js</title>
</head>
<body ng-controller="homeController">
<div align="center">
<a href="#/">Home</a> | <a href="#/productslist">Products List</a> | <a
href="#/addproduct">Add Product</a>
<div ng-view></div>
<h1>java9r.com</h1>
</div>
<script type="text/javascript" src="scripts/js/angular.min.js"></script>
<script type="text/javascript" src="scripts/js/angular-route.min.js"></script>
<script type="text/javascript" src="scripts/app.js"></script>
<script type="text/javascript"
src="scripts/controller/homeController.js"></script>
<script type="text/javascript"
src="scripts/controller/editproductcontroller.js"></script>
<script type="text/javascript"
src="scripts/controller/productdetailscontroller.js"></script>
<script type="text/javascript"
src="scripts/controller/productdeletecontroller.js"></script>
<script type="text/javascript"
src="scripts/controller/productlistController.js"></script>
<script type="text/javascript"
src="scripts/controller/addproductcontroller.js"></script>
<script type="text/javascript" src="scripts/services/productService.js"></script>
</body>
</html>
app.js
var app = angular.module('myapp', [ 'ngRoute' ]);
app.config(function($routeProvider) {
$routeProvider.when('/', {
controller : 'homeController',
templateUrl : 'views/home.html'
});
$routeProvider.when('/productslist', {
controller : 'productlistController',
templateUrl : 'views/productslist.html'
});
$routeProvider.when('/addproduct', {
controller : 'addproductcontroller',
templateUrl : 'views/addproduct.html'
});
$routeProvider.when('/productedit/:id', {
controller : 'editproductcontroller',
templateUrl : 'views/editproduct.html'
});
$routeProvider.when('/productdetails/:id', {
controller : 'productdetailscontroller',
templateUrl : 'views/productdetails.html'
});
$routeProvider.when('/productdelete/:id', {
controller : 'productdeletecontroller',
templateUrl : 'views/productslist.html'
});
$routeProvider.otherwise({
redirectTo : '/'
});
});
homeController.js
app.controller('homeController', function($scope) {
$scope.message = 'Home Controller Message';
});
productlistController.js
app.controller('productlistController', function($scope, $routeParams,
$interval, productService) {
var c = 0;
// $scope.allproductslist = productService.allProducts();
var timer = $interval(function() {
$scope.allproductsmessage = 'Products List ';
productService.allProducts().then(function(allproducts) {
$scope.allproductslist = allproducts;
});
c++;
if (c === 50) {
$scope.message = "Restarting the timer again :-)";
c = 0;
}
}, 1000);
});
productdetailscontroller.js
app.controller('productdetailscontroller', function($route, $scope,
$routeParams, $http, productService) {
var id = $routeParams.id;
productService.oneProduct(id).then(function(oneproduct) {
$scope.productdetailsmessage = 'Product Details ';
$scope.product = oneproduct;
});
});
addproductcontroller.js
app.controller('addproductcontroller', function($scope, $routeParams,
productService) {
$scope.addproductsmessage = 'New Product ';
$scope.addProduct = function(product) {
productService.saveProsuct(product);
}
});
editproductcontroller.js
app.controller('editproductcontroller', function($route, $scope, $routeParams,
$http, productService) {
var id = $routeParams.id;
productService.oneProduct(id).then(function(oneproduct) {
$scope.editproductsmessage = 'Edit Product';
$scope.product = oneproduct;
});
$scope.updateProduct = function(product) {
productService.productupdate(product);
}
});
productdeletecontroller.js
app.controller('productdeletecontroller', function($route, $scope,
$routeParams, $http, productService) {
var id = $routeParams.id;
productService.ProductDelete(id);
});
productService.js
app
.service(
'productService',
function($http) {
var promise;
this.allProducts = function() {
promise = $http
.get(
"http://localhost:8080/SpringMVCRestfulAndAngularjs/product/all/")
.then(function(response) {
return response.data;
});
return promise;
};
this.oneProduct = function(id) {
promise = $http.get(
"http://localhost:8080/SpringMVCRestfulAndAngularjs/product/findone/"
+ id).then(function(response) {
return response.data;
});
return promise;
};
this.ProductDelete = function(id) {
promise = $http
.post(
"http://localhost:8080/SpringMVCRestfulAndAngularjs/product/delete/"
+ id)
.then(
function(response) {
window.location.href = 'http://localhost:8080/SpringMVCRestfulAndAngularjs/index.html#/productslist';
});
};
this.productupdate = function(product) {
$http
.post(
'http://localhost:8080/SpringMVCRestfulAndAngularjs/product/update/',
product)
.then(
function(response) {
window.location.href = 'http://localhost:8080/SpringMVCRestfulAndAngularjs/index.html#/productslist';
});
};
this.saveProsuct = function(product) {
$http
.post(
'http://localhost:8080/SpringMVCRestfulAndAngularjs/product/create/',
product)
.then(
function(response) {
window.location.href = 'http://localhost:8080/SpringMVCRestfulAndAngularjs/index.html#/productslist';
});
};
});
angular.min.js
angular.min.js
angular-route.min.js
angular-route.min.js
home.html
<h3>Home Page</h3>
{{message}}
productslist.html
<div align="center">
<h3>{{allproductsmessage}}</h3>
<br> Search option <select ng-model="search">
<option ng-repeat="product in allproductslist">{{
product.name }}</option>
</select> | Search <input type="text" ng-model="search"> {{message}}
<table border="2" align="center">
<tr>
<td>Product-ID</td>
<td>Product Name</td>
<td>Price</td>
<td>Quantity</td>
<td>Description</td>
<td>Options</td>
</tr>
<tr ng-repeat="product in allproductslist | filter:search">
<td>{{ product.id }}</td>
<td>{{ product.name }}</td>
<td>{{ product.price }}</td>
<td>{{ product.quantity }}</td>
<td>{{ product.description }}</td>
<td><a href="#/productdetails/{{product.id}}">Details</a> | <a
href="#/productedit/{{product.id}}">Edit</a> | <a
href="#/productdelete/{{product.id}}">Delete</a></td>
</tr>
</table>
</div>
addproduct.html
<h3>{{addproductsmessage}}</h3>
<form ng-submit="addProduct(product)">
<table width="23%" align="center" border="2">
<tr>
<td>Photo</td>
<td><select ng-model="product.photo">
<option value="product1.jpeg">Product 1</option>
<option value="product2.jpeg">Product 2</option>
<option value="product3.jpeg">Product 3</option>
<option value="product4.jpeg">Product 4</option>
<option value="product5.jpeg">Product 5</option>
<option value="product6.jpeg">Product 6</option>
<option value="product7.jpeg">Product 7</option>
<option value="product8.jpeg">Product 8</option>
<option value="product9.jpeg">Product 9</option>
<option value="product10.jpeg">Product 10</option>
</select> <br> <img alt="" src="images/{{product.photo}}" height="200px"
width="200px"></td>
</tr>
<tr>
<td>Id</td>
<td><input type="number" ng-model="product.id"></td>
</tr>
<tr>
<td>Name</td>
<td><input type="text" ng-model="product.name"></td>
</tr>
<tr>
<td>Price</td>
<td><input type="number" ng-model="product.price"></td>
</tr>
<tr>
<td>Quantity</td>
<td><input type="number" ng-model="product.quantity"></td>
</tr>
<tr>
<td>Description</td>
<td><textarea rows="8" cols="20" ng-model="product.description"></textarea>
</td>
</tr>
<tr>
<td></td>
<td>
<button type="submit">Save</button>
</td>
</tr>
</table>
</form>
editproduct.html
<div align="center">
<h3>{{editproductsmessage}}</h3>
<form ng-submit="updateProduct(product)">
<table width="23%" align="center" border="2">
<tr>
<td>Photo</td>
<td><select ng-model="product.photo">
<option value="product1.jpeg">Product 1</option>
<option value="product2.jpeg">Product 2</option>
<option value="product3.jpeg">Product 3</option>
<option value="product4.jpeg">Product 4</option>
<option value="product5.jpeg">Product 5</option>
<option value="product6.jpeg">Product 6</option>
<option value="product7.jpeg">Product 7</option>
<option value="product8.jpeg">Product 8</option>
<option value="product9.jpeg">Product 9</option>
<option value="product10.jpeg">Product 10</option>
</select> <br> <img alt="" src="images/{{product.photo}}" height="200px"
width="200px"></td>
</tr>
<tr>
<td>Id</td>
<td><input type="number" ng-model="product.id" readonly></td>
</tr>
<tr>
<td>Name</td>
<td><input type="text" ng-model="product.name"></td>
</tr>
<tr>
<td>Price</td>
<td><input type="number" ng-model="product.price"></td>
</tr>
<tr>
<td>Quantity</td>
<td><input type="number" ng-model="product.quantity"></td>
</tr>
<tr>
<td>Description</td>
<td><textarea rows="8" cols="20" ng-model="product.description"></textarea>
</td>
</tr>
<tr>
<td></td>
<td>
<button type="submit">Save</button>
</td>
</tr>
</table>
</form>
</div>
productdetails.html
<div align="center">
<h3>{{productdetailsmessage}}</h3>
<table width="23%" align="center" border="2">
<tr>
<td>Photo</td>
<td><select ng-model="product.photo" readonly>
<option value="product1.jpeg">Product 1</option>
<option value="product2.jpeg">Product 2</option>
<option value="product3.jpeg">Product 3</option>
<option value="product4.jpeg">Product 4</option>
<option value="product5.jpeg">Product 5</option>
<option value="product6.jpeg">Product 6</option>
<option value="product7.jpeg">Product 7</option>
<option value="product8.jpeg">Product 8</option>
<option value="product9.jpeg">Product 9</option>
<option value="product10.jpeg">Product 10</option>
</select> <br>
<img alt="" src="images/{{product.photo}}" height="200px"
width="200px"></td>
</tr>
<tr>
<td>Id</td>
<td><input type="number" ng-model="product.id" readonly></td>
</tr>
<tr>
<td>Name</td>
<td><input type="text" ng-model="product.name" readonly></td>
</tr>
<tr>
<td>Price</td>
<td><input type="number" ng-model="product.price" readonly></td>
</tr>
<tr>
<td>Quantity</td>
<td><input type="number" ng-model="product.quantity" readonly></td>
</tr>
<tr>
<td>Description</td>
<td><textarea rows="8" cols="20" ng-model="product.description"
readonly></textarea></td>
</tr>
</table>
<a href="#/productslist"> Close</a>
</div>
pom.xml
<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>java9r.com</groupId>
<artifactId>SpringMVCRestfulAndAngularjs</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>SpringMVCRestfulAndAngularjs</name>
<url>http://maven.apache.org</url>
<!-- Specifying the Versions of Spring, Hiberante, MySQL etc -->
<properties>
<spring.version>4.3.0.RELEASE</spring.version>
<hibernate.version>4.3.8.Final</hibernate.version>
<jackson.library>2.7.5</jackson.library>
<mysql.version>5.1.10</mysql.version>
<junit-version>4.11</junit-version>
<servlet-api-version>3.1.0</servlet-api-version>
<jsp-version>2.1</jsp-version>
<jstl-version>1.2</jstl-version>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- Specifying the Dependencies -->
<dependencies>
<!-- Spring 4 dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp-version}</version>
<scope>provided</scope>
</dependency>
<!-- org.codehaus.jackson/jackson-mapper-asl -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.5.0</version>
</dependency>
<!-- javax.persistence/persistence-api -->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
<!-- commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<!-- artifact/org.slf4j/log4j-over-slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.6.6</version>
<scope>runtime</scope>
</dependency>
<!-- /artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.6</version>
<scope>compile</scope>
</dependency>
<!-- artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.library}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.library}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.library}</version>
</dependency>
<!-- artifact/org.javassist/javassist -->
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.1-GA</version>
</dependency>
</dependencies>
<build>
<finalName>SpringMVCRestfulAndAngularjs</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<webXml>src/main/webapp/WEB-INF/web.xml</webXml>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
0 comments:
Post a Comment