1.LomBok
lombok可以帮助我们编写构造函数和getter,setter方法
引入依赖
<!--lombok依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
lombok注解使用
@Data
:自动提供
getter
和
setter
、
hashCode
、
equals
、
toString
等方法
@Getter
:自动提供
getter
方法
@Setter
:自动提供
setter
方法
@Slf4j
:自动在
bean
中提供
log
变量,其实用的是
slf4j
的日志功能。
例如;在
javabean
上加
@Data
,那么就可以省去
getter
和
setter
等方法的编写,
lombok
插件会自动生成
2.静态资源的放置
默认的静态资源路径为:
classpath:/META-INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public
一般静态资源放置在resource/static/
3.添加拦截器
创建拦截器
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.debug("preHandle.......");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
log.debug("postHandle.......");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
log.debug("afterCompletion.......");
}
}
注册拦截器
@Configuration
public class MvcConfig implements WebMvcConfigurer {
/**
* 将拦截器注册到springioc容器
* @return
*/
@Bean
public MyInterceptor myInterceptor() {
return new MyInterceptor();
}
/**
* 重写该方法,将自定义拦截器加入拦截器链
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor()).addPathPatterns("/*");
}
4.整合JDBC和事务
jdbc和事务是spring配置中的重要一环,而springboot对此的处理显得尤为简单
提供jdbc启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
加入Mysql依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
springboot中通过注解来控制事务,使用时将@Transactional 加在对应的类或方法即可,如下所示
@Transactional
public void saveUser(User user) {
System.out.println("saveUser....");
//选择性查询,如果属性为空则不会出现在insert语句中
userMapper.insertSelective(user);
}
5.整合连接池
在引入jdbc启动器时,springboot自动帮我们引入了数据连接池,HikariCP是目前连接性能最好的连接池,接下来我们只需要在application.yml中配置连接池的参数即可
spring:
#连接池参数配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///springboot?serverTimezone=UTC
username: root
password: root
6.整合Mybatis
springboot官方没有提供mybatis的启动器,不过mybatis官方自己提供了启动器,在pom中引入启动器
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
配置application.yml
mybatis:
#实体类包别名
type-aliases-package: cn.pojo
configuration:
#控制台输出执行sql
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
配置Mapper扫描,我们可以在每一个接口都配置@Mapper,也可以在启动类添加扫描包注解,如下所示
@SpringBootApplication
@MapperScan("cn.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
7.通用Mapper设置
引入通用Mapper启动器
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
编写UserMapper,需要继承Mapper,不需要在接口中写任何方法
import tk.mybatis.mapper.common.Mapper;
public interface UserMapper extends Mapper<User> {
在User加上实体类注解
@Data
@Table(name = "tb_user")
public class User {
//设置主键
@Id
//主键自动回填
@KeySql(useGeneratedKeys = true)
private Long id;
....}
对UserService进行改造
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User findById(Long id) {
//根据主键查询
return userMapper.selectByPrimaryKey(id);
}
@Transactional
public void saveUser(User user) {
System.out.println("saveUser....");
//选择性查询,如果属性为空则不会出现在insert语句中
userMapper.insertSelective(user);
}
8.Junit测试
引入依赖
<!--junit-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
在测试包中编写测试类必须要添加@SpringBootTest和@RunWith(SpringRunner.class)注解
//指定junit运行环境
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void findById() {
User user = userService.findById(9L);
System.out.println(user);
}
}
9.整合Redis
引入依赖
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置application.yml文件
redis:
host: localhost
port: 6379