spring boot 实践

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值