Spring中AOP常见练习题及答案

本文展示了如何在Springboot应用中使用AOP记录Web登录请求的日志,包括添加相关依赖,编写Controller和Aspect切面来捕获请求信息。同时,也详细说明了Spring整合Mybatis的过程,包括在JdbcConfig中创建数据源,MybatisConfig中构建SqlSessionFactoryBean和MapperScannerConfigurer。
部署运行你感兴趣的模型镜像

题目一

请仔细阅读下面代码,根据方法内的提示,在Begin - End区域内进行代码补充(有个pom.xml需要填充相关依赖),使用AOP记录Web登录请求日志,获取请求URL,请求方式以及请求后的返回内容。

1.在pom.xml中添加依赖

       <!--Begin-->

       <!--  Spring boot 整合AOP依赖-->

<dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-aop</artifactId>

</dependency>

<!--End-->

2.方法写出返回值

package com.yy.hello.controller;



import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;



@RestController

public class Blog {



    //添加路由映射到/Login并编写相应方法返回Welcome Login!

/**********   Begin   **********/

@RequestMapping("/Login")

public String Login(){

return "Welcome Login!";

}

   /**********   End   **********/



}

3.从后台获取前端的请求并将请求的数据打印出来

package com.yy.hello;

import java.util.Enumeration;



import javax.servlet.http.HttpServletRequest;



import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.aspectj.lang.JoinPoint;

import org.aspectj.lang.annotation.AfterReturning;

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Before;

import org.aspectj.lang.annotation.Pointcut;

import org.springframework.stereotype.Component;

import org.springframework.web.context.request.RequestContextHolder;

import org.springframework.web.context.request.ServletRequestAttributes;

@Aspect

@Component

public class BlogAspect {

    private Logger logger = LoggerFactory.getLogger(getClass());



    //定义切点

    @Pointcut("execution(public * com.yy.hello.controller.Blog.Login())")

    public void webLog() {

    }



    //前置通知,方法调用前被调用

    @Before("webLog()")

    public void doBefore(JoinPoint joinPoint) throws Throwable {

  /**********   Begin   **********/

        // 获取HttpServletRequest对象

        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();

        HttpServletRequest request = attributes.getRequest();

        // 打印所给要求中的固定格式

        logger.info("---------------请求内容----------------");

        //打印URL

        logger.info("URL : "+request.getRequestURL());

        //打印请求方式

        logger.info("HTTP_METHOD : "+request.getMethod());

        // 打印所给要求中的固定格式

        logger.info("---------------请求内容----------------");

  /**********   End   **********/



    }



    //在方法执行完结后打印返回内容

    @AfterReturning(returning = "ret", pointcut = "webLog()")

    public void doAfterReturning(Object ret) throws Throwable {

  /**********   Begin   **********/

        // 打印所给要求中的固定格式

        logger.info("---------------返回内容----------------");

        // 处理完请求,打印返回内容

        logger.info("RESPONSE : "+ret);

// 打印所给要求中的固定格式

        logger.info("---------------返回内容----------------");

  /**********   End   **********/

    }

}

题目二

将Spring整合Mybatis所需要的内容补充完整。

1、在JdbcConfig配置类中读取jdbc。properties文件中数据库四要素,用来构建连接池对象

2、在MybatisConfig配置类中构建SqlSessionFactoryBean和MapperScannerConfigurer

3、在SpringConfig配置类中添加Spring相关的配置

实现提示:

1、SpringConfig配置类中需要设置service的包扫描、加载properties配置文件、引入其他的配置类

2、jdbc.properties配置文件中需要将数据库连接信息改成自己的数据库连接信息

代码实现:

1、打开JdbcConfig配置类

//TODO:构建数据库连接池对象DataSource

public class JdbcConfig {

    //1.驱动

    @Value("${jdbc.driver}")

    private String driver;

    //2.url地址

    @Value("${jdbc.url}")

    private String url;

    //3.用户名

    @Value("${jdbc.username}")

    private String userName;

    //4.用户密码

    @Value("${jdbc.password}")

    private String password;



    @Bean

    //构建DataSource对象

    public DataSource dataSource(){

        DruidDataSource ds = new DruidDataSource();

        ds.setDriverClassName(driver);

        ds.setUrl(url);

        ds.setUsername(userName);

        ds.setPassword(password);

        return ds;

    }

}

2、打开MybatisConfig配置类进行配置

public class MybatisConfig {



    //TODO:构建SqlSessionFactoryBean对象

    @Bean

    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){

        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();

        sqlSessionFactoryBean.setDataSource(dataSource);

        sqlSessionFactoryBean.setTypeAliasesPackage("com.itheima.domain");

        return sqlSessionFactoryBean;

    }

    //TODO:构建MapperScannerConfigurer对象

    @Bean

    public MapperScannerConfigurer mapperScannerConfigurer(){

        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();

        mapperScannerConfigurer.setBasePackage("com.itheima.mapper");

        return mapperScannerConfigurer;

    }

}

3、打开SpringConfig配置类进行配置

@Configuration

@ComponentScan("com.itheima.service")

@PropertySource("classpath:jdbc.properties")

@Import({JdbcConfig.class,MybatisConfig.class})

public class SpringConfig {



}

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Ale-阿乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值