java spring boot jms_Java编程之Spring Boot通过JMSTemplate 整合ActiveMQ

一.项目结构

本教程创建的应用程序结构如下:

034cb03ceabf43fea761e136b7e97a9b.png

二.从Spring Initializr创建Spring boot应用程序

1.访问Spring Initializr网站,并通过 Jersey (JAX-RS)依赖创建spring boot项目

217.html

2.创建zip文件的项目。解压到自己电脑的某个地方。通过eclipse中的导入maven 已经存在的项目导入该项目

3.检查项目的maven依赖文件,看是否有加入spring-boot-starter-jersey的依赖。

org.springframework.boot

spring-boot-starter-jersey

org.springframework.boot

spring-boot-starter-test

test

四.创建JAX-RS REST资源文件

现在创建一些JAX-RS资源用来做测试。我这里创建了一个UserResource class.

UserResource.java:

package com.howtodoinjava.jerseydemo;

import java.net.URI;

import java.net.URISyntaxException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Map;

import javax.ws.rs.Consumes;

import javax.ws.rs.DELETE;

import javax.ws.rs.GET;

import javax.ws.rs.POST;

import javax.ws.rs.PUT;

import javax.ws.rs.Path;

import javax.ws.rs.PathParam;

import javax.ws.rs.Produces;

import javax.ws.rs.core.Response;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlRootElement;

@XmlAccessorType(XmlAccessType.NONE)

@XmlRootElement(name = "users")

@Path("/users")

public class UserResource

{

private static Map DB = new HashMap<>();

@GET

@Produces("application/json")

public Users getAllUsers() {

Users users = new Users();

users.setUsers(new ArrayList<>(DB.values()));

return users;

}

@POST

@Consumes("application/json")

public Response createUser(User user) throws URISyntaxException

{

if(user.getFirstName() == null || user.getLastName() == null) {

return Response.status(400).entity("Please provide all mandatory inputs").build();

}

user.setId(DB.values().size()+1);

user.setUri("/user-management/"+user.getId());

DB.put(user.getId(), user);

return Response.status(201).contentLocation(new URI(user.getUri())).build();

}

@GET

@Path("/{id}")

@Produces("application/json")

public Response getUserById(@PathParam("id") int id) throws URISyntaxException

{

User user = DB.get(id);

if(user == null) {

return Response.status(404).build();

}

return Response

.status(200)

.entity(user)

.contentLocation(new URI("/user-management/"+id)).build();

}

@PUT

@Path("/{id}")

@Consumes("application/json")

@Produces("application/json")

public Response updateUser(@PathParam("id") int id, User user) throws URISyntaxException

{

User temp = DB.get(id);

if(user == null) {

return Response.status(404).build();

}

temp.setFirstName(user.getFirstName());

temp.setLastName(user.getLastName());

DB.put(temp.getId(), temp);

return Response.status(200).entity(temp).build();

}

@DELETE

@Path("/{id}")

public Response deleteUser(@PathParam("id") int id)throws URISyntaxException {

User user = DB.get(id);

if(user != null) {

DB.remove(user.getId());

return Response.status(200).build();

}

return Response.status(404).build();

}

static

{

User user1 = new User();

user1.setId(1);

user1.setFirstName("John");

user1.setLastName("Wick");

user1.setUri("/user-management/1");

User user2 = new User();

user2.setId(2);

user2.setFirstName("Harry");

user2.setLastName("Potter");

user2.setUri("/user-management/2");

DB.put(user1.getId(), user1);

DB.put(user2.getId(), user2);

}

}

Users.java

package com.howtodoinjava.jerseydemo;

import java.util.ArrayList;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

@XmlAccessorType(XmlAccessType.NONE)

@XmlRootElement(name = "users")

public class Users {

@XmlElement(name="user")

private ArrayList users;

public ArrayList getUsers() {

return users;

}

public void setUsers(ArrayList users) {

this.users = users;

}

}

User.java

package com.howtodoinjava.jerseydemo;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlAttribute;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

@XmlAccessorType(XmlAccessType.NONE)

@XmlRootElement(name = "user")

public class User implements Serializable {

private static final long serialVersionUID = 1L;

@XmlAttribute(name = "id")

private int id;

@XmlAttribute(name="uri")

private String uri;

@XmlElement(name = "firstName")

private String firstName;

@XmlElement(name = "lastName")

private String lastName;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

public String getUri() {

return uri;

}

public void setUri(String uri) {

this.uri = uri;

}

}

五.Jersey配置

1.现在我们有一个jax - rs资源,我们想从spring boot应用程序中访问它,其中包括Jersey依赖。让我们将此资源注册为Jersey资源。

package com.howtodoinjava.jerseydemo;

import org.glassfish.jersey.server.ResourceConfig;

import org.springframework.stereotype.Component;

@Component

public class JerseyConfig extends ResourceConfig

{

public JerseyConfig()

{

register(UserResource.class);

}

}

查看@ component注释。它允许在spring引导自动扫描源文件夹中的java类时注册这个类。

2.ResourceConfig提供了简化jax - rs组件注册的高级功能。

3.通过SpringBootServletInitializer扩展spring boot项目

package com.howtodoinjava.jerseydemo;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.boot.web.support.SpringBootServletInitializer;

@SpringBootApplication

public class JerseydemoApplication extends SpringBootServletInitializer

{

public static void main(String[] args)

{

new JerseydemoApplication().configure(new SpringApplicationBuilder(JerseydemoApplication.class)).run(args);

}

}

六.demo

启动spring boot项目,并测试资源

Access /users resource

217.html

Access /users/1 resource

217.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值