Spring Boot 快速入门(二),华为工程师面试经历
通过 @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),可以直接使用。
添加相关依赖
<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;
}
}
运行结果图片:
在搭建 SpringBoot 工程,已经在 pom.xml 文件中添加了 SpringBoot 集成 junit 测试的起步依赖spring-boot-starter-test
,我们只需要在导入 junit 的坐标就可以进行单元测试了。
在 pom.xml 中导入相关坐标
<dependency>
<groupId>junit</groupId>
<
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);
}
}
点击运行查看结果:
添加 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 相关 pom 坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
安装 redis 软件
评论