前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第八节 微服务部分追加

第八节 微服务部分追加

作者头像
用户1418372
发布2018-09-13 10:19:53
3510
发布2018-09-13 10:19:53
举报
文章被收录于专栏:清晨我上码清晨我上码
  1. spring boot test测试框架的简单使用
  • 导入pom
代码语言:javascript
复制
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

使用类似如下:

代码语言:javascript
复制
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class UserControllerIntegrationTests {

    private final RestTemplate restTemplate = new RestTemplate();
    //Required to Generate JSON content from Java objects
    public static final ObjectMapper objectMapper = new ObjectMapper();

    @Value("${local.server.port}")
    private int port;

    /**
     * Test the GET /v1/user/{id} API
     */
    @Test
    public void testGetById() {
        //API call
        Map<String, Object> response
                = restTemplate.getForObject("http://localhost:" + port + "/v1/user/1", Map.class);
        assertNotNull(response);

        //Asserting API Response
        String id = response.get("id").toString();
        assertNotNull(id);
        assertEquals("1", id);
        String name = response.get("name").toString();
        assertNotNull(name);
        assertEquals("User Name 1", name);
        boolean isModified = (boolean) response.get("isModified");
        assertEquals(false, isModified);
    }
}
  1. 可以为每个项目 配置异常处理
  • 首先整个项目中设计一个common的模块,该模块是为了设计一些公共的功能同时兼顾代码的复用 我们在其他模块中引入该模块就可以使用pom 引入参考如下:
代码语言:javascript
复制
   <dependency>
            <groupId>com.xzg</groupId>
            <artifactId>online-table-reservation-common</artifactId>
            <version>v1</version>
        </dependency>

实现方式有两种方式,其一直接使用AOP自己去拦截controler实现 其二使用spring提供的@RestControllerAdvice 和 @ExceptionHandler实现 第一种实现方式下面是一种xml配置:

代码语言:javascript
复制
<!-- aop -->
<aop:aspectj-autoproxy />
<beans:bean id="controllerAop" class="xxx.common.aop.ControllerAOP" />
<aop:config>
<aop:aspect id="myAop" ref="controllerAop">
<aop:pointcut id="target"
expression="execution(public xxx.common.beans.ResultBean *(..))" />
<aop:around method="handlerControllerMethod" pointcut-ref="target" />
</aop:aspect>
</aop:config>

也可以使用javaconfig

代码语言:javascript
复制
//公共切点定义
@Aspect
public class AopArchitecture {

  //业务服务是定义在服务接口中的任意方法的执行。
  @Pointcut("execution(* com.xxx.aop..service.*.*(..))")
  public void businessService() {}
}

//声明通知(前置通知  后置通知 环绕通知 ) 具体根据实现
例如环绕
@Aspect
public class AroundExample {
//引入前面的的切点
    @Around("com.xxx.AopArchitecture.businessService()")
    public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
        // start  todo
        Object retVal = pjp.proceed();
        // stop  todo
        return retVal;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档