【叶神中级】二篇 Spring Boot,SpringMVC,Spring IOC,MyBatis

乐观男孩乐观男孩

Error

处理SpringMVC外的Exception 或SpringMVC没有处理的Exception

代码
admin Mapping:

 @RequestMapping("/admin")
    @ResponseBody
    public String admin(@RequestParam(value = "key",required = false)String key){
        if ("admin".equals(key))
            return "hello admin";
        else
            throw new IllegalArgumentException("key error");
    }

输入admin?key=admin
在这里插入图片描述
输入其他:

Error Mapping:

 //Exception的处理
    @ExceptionHandler
    @ResponseBody
    public String error(Exception e){
        return "error: "+e.getMessage();
    }

加上错误处理之后
在这里插入图片描述

IOC

@Service
@Autowired

在这里插入图片描述代码:

1.Controller

import com.nowcoder.toutiao.service.TouTiaoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

//IOC Controller
@Controller
public class IocController {
    @Autowired
    private TouTiaoService ttService;

    @RequestMapping("/ttservice")
    @ResponseBody
    public String ttService(){
       String ttmessage= ttService.say();
        return ttmessage;
    }
}

2.Service:

import org.springframework.stereotype.Service;

@Service
public class TouTiaoService {
    public String say(){
        return "this is form toutiaoService";
    }
}

在这里插入图片描述

AOP 面向切面编程

@Aspect
@Component //(把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)
@JoinPoint
@Before(execution(*com.nowcoder.toutiao.controller.*Controller.*(..)))
@After(execution(*com.nowcoder.toutiao.*controller.*Controller.*(..)))

在这里插入图片描述
代码:
1。LogAspect:

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

@Aspect
@Component //(把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)
public class LogAspect {
    private static final Logger logger = LoggerFactory.getLogger(LogAspect.class);

    // 执行所有方法之前都调用这个方法
    @Before("execution(* com.nowcoder.toutiao.controller.IndexController.*(..))")
    public void beforeMethod(JoinPoint joinPoint){
        //joinPoint 切点
        StringBuilder sb  =new StringBuilder();
        for (Object arg:joinPoint.getArgs()
             ) {
            sb.append("arg: "+arg.toString()+" | ");

        }
        logger.info("before method :"+sb.toString());
    }

    // 执行所有方法之后都调用这个方法
    @After("execution(* com.nowcoder.toutiao.controller.IndexController.*(..))")
    public void afterMethod(JoinPoint joinPoint){
        logger.info("after");
    }
}

2。Controller

  @RequestMapping(path={"/profile/{groupId}/{userId}"})
    @ResponseBody
    public java.lang.String profile(@PathVariable("groupId") String groupId,
                          @PathVariable("userId") int userId ,
                          @RequestParam(value="type",defaultValue = "1") String type,
                          @RequestParam(value = "key",defaultValue = "nowcoder")String key){
        return String.format("Group:{%s},User:{%d},Type:{%s},Key:{%s}",groupId,userId,type,key);
    }

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值