写点什么

Spring Boot 快速入门(二),华为工程师面试经历

用户头像
极客good
关注
发布于: 刚刚
  • 通过 @Bean 注解,将我们定义的拦截器注册到 Spring 容器

  • @return


*/


@Bean


public LoginInterceptor loginInterceptor(){


return new LoginInterceptor();


}


/**


  • 重写接口中的 addInterceptors 方法,添加自定义拦截器

  • @param registry


*/


@Override


public void addInterceptors(InterceptorRegistry registry) {


// 通过 registry 来注册拦截器,通过 addPathPatterns 来添加拦截路径


registry.addInterceptor(this.loginInterceptor()).addPathPatterns("/**");


}


}


配置日志级别


因为我们记录的 log 级别是 debug,默认是显示 info 以上,需要进行配置


新建 application.yml 文件,进行配置

设置 com.leyou 包的日志级别为 debug

logging:


level:


com:


ly: debug


修改测试代码:


//@Slf4j


@RestController


public class HelloController {


@GetMapping("/hello.do")


public String hello() {


System.out.println("Hello method");


//log.("Hello method");


return "Hello, spring boot";


}


}


再次运行,查看结果: http://localhost:8080/hello.do



进行使用 lombok 进行优化: lombok相关配置


再 LoginInterceptor 类和 HelloController 类上方添加 @Slf4j 注解,之后private Logger log = LoggerFactory.getLogger(LoginInterceptor.class);这条语句就没有用了。@Slf4 注解会为我们提供一个 Logger 对象(名称为 log),可以直接使用。



整合 Mybatis




添加相关依赖


<dependency>


<groupId>org.mybatis.spring.boot</groupId>


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


<version>1.1.1</version>


</dependency>


<dependency>


<groupId>mysql</groupId>


<artifactId>mysql-connector-java</artifactId>


<version>8.0.11</version>


</dependency>


在 application.yml 文件中配置信息


#数据库连接信息


spring:


datasource:


driver-class-name: com.mysql.cj.jdbc.Driver


url=jdbc: mysql://localhost:3306/boot?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8


username: root


password: 123456


#配置 mybatis 信息


#spring 集成 Mybatis 环境


#pojo 别名扫描包


mybatis:


type-aliases-package: com.ly.domain


#加载 Mybatis 映射文件


mapper-locations: classpath:mapper/*Mapper.xml


创建实体类,并在数据库中建立对应的表,添加数据


public class User {


private Long id;


private String username;


private String password;


private String name;


/**


  • Get、Set、toString


*/


}


配置实体类与表的映射关系:UserMapper.xml


在 resources 中新建一个 mapper 文件,新建 UserMapper.xml 进行配置


<?xml version="1.0" encoding="UTF-8" ?>


<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >


<mapper namespace="com.ly.mapper.UserMapper" >


<select id="queryUserList" resultType="user">


select * from user;


</select>


<select id="queryUserById" parameterType="Long" resultType="user">


select * from user where id = #{id};


</select>


</mapper>


新建 Mapper 接口,这里没有配置 mapper 接口扫描包,我们需要给每一个 Mapper 接口添加 @Mapper 注解,才能被识别


@Mapper


public interface UserMapper {


public List<User> queryUserList();


public User queryUserById(Long id);


}


新建 MybatisController 类进行测试:


@RestController


@RequestMapping("user")


public class MybatisController {


@Autowired


private UserMapper userMapper;


@RequestMapping("/query")


public List<User> queryUserList(){


List<User> users = userMapper.queryUserList();


return users;


}


@GetMapping("{id}")


public User queryUserById(@PathVariable("id") Long id){


User user = userMapper.queryUserById(id);


return user;


}


}


运行结果图片:




Junit 单元测试




在搭建 SpringBoot 工程,已经在 pom.xml 文件中添加了 SpringBoot 集成 junit 测试的起步依赖spring-boot-starter-test,我们只需要在导入 junit 的坐标就可以进行单元测试了。


在 pom.xml 中导入相关坐标


<dependency>


<groupId>junit</groupId>


<


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


artifactId>junit</artifactId>


<scope>test</scope>


</dependency>


新建 Mybatis 测试类进行测试


@RunWith(SpringRunner.class)


@SpringBootTest(classes = SpringbootTestApplication.class)


public class MybatisTest {


@Autowired


private UserMapper userMapper;


@Test


public void test(){


List<User> user=userMapper.queryUserList();


System.out.println(user);


}


}


点击运行查看结果:



整合 Spring Data JPA




添加 SpringData JPA 的起步依赖


<dependency>


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


<artifactId>spring-boot-starter-data-jpa</artifactId>


</dependency>


用注解配置 User 类,我们不需要配置映射关系,SpringData 底层会自动生成


@Entity


public class User {


@Id


@GeneratedValue(strategy = GenerationType.IDENTITY)


private Long id;


private String username;


private String password;


private String name;


/**


  • Get、Set、toString


*/


}


定义 UserRepository 接口,添加 findAll 方法


public interface UserRepository extends JpaRepository<User,Long> {


public List<User> findAll();


}


在 application.properties 中配置相关信息


spring:


#配置 jpa 信息


jpa:


database: mysql


show-sql: true


generate-ddl: true


hibernate:


ddl-auto: update


naming.implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl


naming.physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl


编写测试类测试代码


@RunWith(SpringRunner.class)


@SpringBootTest(classes = SpringbootJpaApplication.class)


public class JpaTest {


@Autowired


private UserRepository userRepository;


@Test


public void test(){


List<User> findAll =userRepository.findAll();


System.out.println(findAll);


}


}


运行结果:



如果运行报错,可能的原因是 jdk 版本问题:


<dependency>


<groupId>javax.xml.bind</groupId>


<artifactId>jaxb-api</artifactId>


<scope>2.3.0</scope>


</dependency>


整合 Redis




导 redis 相关 pom 坐标


<dependency>


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


<artifactId>spring-boot-starter-data-redis</artifactId>


</dependency>


安装 redis 软件



用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
Spring Boot 快速入门(二),华为工程师面试经历