SpringBoot默认配置修改及环境配置详解

springboot基本已整合所有,此处只是对默认配置的修改以及配置一些环境

1.配置Mybatis

首先引入场景mybatis启动器以及mysql依赖等:数据库连接池默认使用的是hikari连接池,无需做其他配置,即可使用。当然如果想要更换为德鲁伊,只需更改type就可以了,前提是引入Druid的启动器

<dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>1.1.22</version>
    </dependency>

mybatis:
  //扫描映射文件.xml文件,具体看你的映射文件位置,可以指定别名包。
  mapper-locations: classpath:com.javasm.*.mapper/*.xml
  type-aliases-package: com.javasm
spring:
  datasource:
  //springboot默认用的驱动是8.0.22(2.4.2版本)时区必须加上GMT+8
    url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8&useSSL=false
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource//默认是hikari连接池(可以不用指定type),此处修改为德鲁伊(指定type为druid),还有一些其他配置可以酌情配置initial-size、max-active等

注意:在启动类上不要忘记配置接口扫描注解,@MapperScan("接口所在位置")

2.静态资源配置

静态资源包括css、js、图片、以及html等。默认客户端是不能进行直接访问,相当于以前的webapps目录下的WEB-INF目录下的文件,只能通过前端控制器进行访问,springboot内部默认加载4个静态资源目录:["/META-INF/resources","/resources/","/static/","/public/"], 这4个目录谁的优先级从高到低。

3. springboot跨域设置

新建一个配置类,标明其是一个配置类,并配置corsFilter组件进容器

@Configuration
public class MyCommonConfig {

    @Bean//跨域配置
    public FilterRegistrationBean<Filter> corsFilter(){
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.addAllowedOrigin("http://localhost:8888");
        config.addAllowedHeader("*");
        config.addAllowedMethod("*");
        source.registerCorsConfiguration("/**",config);
        FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>(new org.springframework.web.filter.CorsFilter(source));
        bean.setOrder(0);
        return bean;
    }
}

4.配置拦截器

新建一个类 implements WebMvcConfigurer

@Component
public class MyWebMvcConfig implements WebMvcConfigurer {

    @Resource  //首先自定义一个拦截器,然后将其将其放入容器@Component,然后在此处装配。
    LoginInterceptor loginInterceptor;

    @Override  //alt+insert复写此方法,配置需要拦截的资源,以及需要放行的资源
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/login","/css/**")
; } }

5.日志集成

springboot默认使用logback日志组件,可以自己进行修改日志组件,此处修改为log4j2日志组件,引入启动器

  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>

将log4j2的配置文件log4j2.xml直接放在resources目录下即可

6.事务支持以及分页插件

在启动类上开启事务支持,@
EnableTransactionManagement,然后在service层配置@Transactional注解使用。

@SpringBootApplication(scanBasePackages = "com.javasm")//包扫描,与SSM中的ComponentScan作用相同,默认是扫描启动类所在的包以及其所在包下的所有子包,此处手动配置为com.javasm
@MapperScan("com.javasm.*.mapper")//扫描dao层接口,动态代理此接口并放入容器中,
@EnableTransactionManagement//开启事务支持
public class Boot01Application {

    public static void main(String[] args) {
        SpringApplication.run(Boot01Application.class, args);
    }

}

添加分页启动器,
pagehelper-spring-boot-starter,与以前一样使用即可

 PageHelper.startPage(pageNum,pageSize);
  List<Sysuser> all = sysuserService.all();
  PageInfo<Sysuser> list = new PageInfo<>(all);

7.异步任务与定时任务

异步任务:代码中执行的耗时任务,在异步线程中执行。比如发短信,发邮件,网络请求,远程接口调用等。

定时任务,使用quartz或者spring-task,按指定的时间执行任务

异步任务、定时任务:应该用第三方的中间件进行执行,如kafka rabbitmq,此处使用了线程池,因为还没学到中间件。。。

//注册线程池
    @Bean
    public ThreadPoolTaskExecutor createTaskExecutor(){
        ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
        threadPoolTaskExecutor.setCorePoolSize(5);
        threadPoolTaskExecutor.setMaxPoolSize(10);
        threadPoolTaskExecutor.setQueueCapacity(100);
        threadPoolTaskExecutor.setKeepAliveSeconds(40);
        threadPoolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        threadPoolTaskExecutor.initialize();
        return threadPoolTaskExecutor;
    }

在启动类上开启异步任务注解,@EnableAsync开启异步任务,然后在service层要执行的异步方法上配合使用@Async注解,如下例:

//控制层方法,调用service层中的异步方法。
@GetMapping("sendSms")
    public String sendSms(){
        System.out.println("主线程:"+Thread.currentThread().getName());
        sysuserService.sendSms();
        System.out.println("主线程:"+Thread.currentThread().getName());
        return "hello";
    }



//这个是service层方法,使用Asnc注解,标明此方法是一个异步方法,
   @Async
    @Override
    public void sendSms() {
        System.out.println("异步发短信:123456789--"+Thread.currentThread().getName());
    }


 
  执行结果如下:
  主线程:http-nio-8080-exec-1
  主线程:http-nio-8080-exec-1
  异步发短信:123456789--createTaskExecutor-1



定时任务:在服务器启动后,在后台默认按照指定时间策略重复执行的任务。此处使用spring-task,首先在启动类上开启任务调度 @EnableScheduling,然后在任务类中的方法上添加@scheduled注解

   //开启两个定时任务 
  @Scheduled(cron = "0/5 * * * * ?")
    public void test01(){
        System.out.println("每隔⑤秒执行一次");
    }

    @Scheduled(cron = "0/7 * * * * ?")
    public void test02(){
        System.out.println("每隔⑦秒执行一次");
    }

执行结果,
  每隔⑤秒执行一次
  每隔⑤秒执行一次
  每隔⑦秒执行一次
  每隔⑤秒执行一次
  每隔⑦秒执行一次
  每隔⑤秒执行一次
  每隔⑦秒执行一次
  每隔⑤秒执行一次

注意:springboot默认 
spring.task.scheduling.pool.size值为1,所以也就是单线程的,如果多个任务调度同时执行,并且其中有比较耗时的任务时,其他任务就会等待被阻塞直到该任务执行完成,可以在yml配置文件中配置线程数量

spring:
  task:
    scheduling:
      pool:
        size: 5

原文链接: 
http://www.cnblogs.com/hys-blog/p/14364610.html

如果觉得本文对你有帮助,可以转发关注支持一下

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值