spring boot 使用小总结
1.spring boot 整合cxf,发布 与调用web service
1.1 依赖pom.xml
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.6</version>
</dependency>
1.1.1 JaxWs spring常用注解
@WebService-定义服务
targetNamespace:指定命名空间
name:portType的名称
portName:port的名称
serviceName:服务名称
endpointInterface:SEI接口地址,如果一个服务类实现了多个接口,只需要发布一个接口的方法,可通过此注解指定要发布服务的接口。
@WebMethod-定义方法(所注解的方法必须是公开方法)
operationName:方法名
exclude:设置为true表示此方法不是webservice方法,反之则表示webservice方法
@WebResult-定义返回值(所注解位置在方法返回值名称处)
name:返回结果值的名称
@WebParam-定义参数(所注解位置在方法属性名称处)
name:指定参数的名称
1.1.2编写接口
@WebService
(name = "ClientWebServiceInterf",
targetNamespace = "http://serverService/")
public interfaceClientWebServiceInterf {
@WebMethod
public String findDSOrderDetail(
@WebParam(name ="token") String token);
@WebMethod
public String updateDSOrder(
@WebParam(name ="orderid") Integer orderID,
@WebParam(name ="successNum") Integer successNum,
@WebParam(name ="token") String token);
}
1.1.3编写实现
@WebService
(targetNamespace="http://serverService/",
endpointInterface="com.ultrasoft.datashare.webservice.ClientWebServiceInterf",
portName = "ClientWebServiceImplPort",
serviceName = "ClientWebServiceImplService")
public class ClientWebServiceImpl implementsClientWebServiceInterf {
。。。。。。。
}
1.1.4.发布服务
@Configuration
public classCxfConfig {
@Bean
public ServletRegistrationBean servletRegistrationBean() {
ServletRegistrationBeanregistration =
newServletRegistrationBean(newCXFServlet());
registration.setName("cxf");
registration.addUrlMappings("/ds/*");
returnregistration;
}
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return newSpringBus();
}
@Bean
public ClientWebServiceInterf userService() {
return newClientWebServiceImpl();
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint =new EndpointImpl(springBus(), userService());
endpoint.publish("/client");
returnendpoint;
}
}
1.1.5调用服务
2. springboot 里restTemplate 用法
2.1 restTemplate介绍
RestTemplate是Spring提供的用于访问Rest服务的客户端,
RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。
调用RestTemplate的默认构造函数,RestTemplate对象在底层通过使用java.net包下的实现创建HTTP 请求,
可以通过使用ClientHttpRequestFactory指定不同的HTTP请求方式。
ClientHttpRequestFactory接口主要提供了两种实现方式
1、一种是SimpleClientHttpRequestFactory,使用J2SE提供的方式(既java.net包提供的方式)创建底层的Http请求连接。
2、一种方式是使用HttpComponentsClientHttpRequestFactory方式,底层使用HttpClient访问远程的Http服务,使用HttpClient可以配置连接池和证书等信息。
2.1.1 注入restTemplate
平时正常使用:如下:
@Autowired
private RestTemplateBuilder builder;
想要上面的用法,就必须在boot的主类里加上如下的代码
@Bean
public RestTemplate restTemplate() {
return builder.build();
}
实际使用
@Autowired
privateRestTemplate restTemplate;
MultiValueMap<String,String> paramMap = new LinkedMultiValueMap<>();
paramMap.add("sessionId",sessionId);
Stringjson = restTemplate.postForObject("http://10.24.184.108:8888/center/v1/user/logout",paramMap, String.class);