SpringBoot==(mybatis-plus-boot使用)

SpringBoot==(mybatis-plus-boot使用)

  1. 创建Maven项目,配置常用依赖

     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
         <version>2.0.7.RELEASE</version>
     </parent>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <spider-flow.version>${project.version}</spider-flow.version>
         <alibaba.fastjson.version>1.2.58</alibaba.fastjson.version>
         <alibaba.druid.version>1.1.16</alibaba.druid.version>
         <alibaba.transmittable.version>2.11.2</alibaba.transmittable.version>
         <mybatis.plus.version>3.1.0</mybatis.plus.version>
         <apache.commons.text.verion>1.6</apache.commons.text.verion>
         <apache.commons.csv.verion>1.8</apache.commons.csv.verion>
         <commons.io.version>2.6</commons.io.version>
         <guava.version>28.2-jre</guava.version>
         <jsoup.version>1.11.3</jsoup.version>
         <xsoup.version>0.3.1</xsoup.version>
     </properties>
    
     <dependencies>
         <!-- spring-boot相关配置 -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-quartz</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-mail</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-jdbc</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-websocket</artifactId>
         </dependency>
         <!-- 数据库相关 -->
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
             <version>${mybatis.plus.version}</version>
         </dependency>
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
         </dependency>
         <!-- alibaba相关包 -->
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
             <version>${alibaba.fastjson.version}</version>
         </dependency>
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>druid-spring-boot-starter</artifactId>
             <version>${alibaba.druid.version}</version>
         </dependency>
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>transmittable-thread-local</artifactId>
             <version>${alibaba.transmittable.version}</version>
         </dependency>
         <!-- apache commons相关 -->
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-text</artifactId>
             <version>${apache.commons.text.verion}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-csv</artifactId>
             <version>${apache.commons.csv.verion}</version>
         </dependency>
         <!-- commons包 -->
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
             <version>${commons.io.version}</version>
         </dependency>
         <dependency>
             <groupId>commons-codec</groupId>
             <artifactId>commons-codec</artifactId>
         </dependency>
         <!-- 其它包 -->
         <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
             <version>${guava.version}</version>
         </dependency>
         <dependency>
             <groupId>org.jsoup</groupId>
             <artifactId>jsoup</artifactId>
             <version>${jsoup.version}</version>
         </dependency>
         <dependency>
             <groupId>us.codecraft</groupId>
             <artifactId>xsoup</artifactId>
             <version>${xsoup.version}</version>
         </dependency>
     </dependencies>
    
  2. 在主项目下创建web---module

  3. 在web目录的resources下创建配置文件application.properties

     server.port=8088
    
     logging.level.root=INFO
     #logging.level.org.spiderflow=DEBUG
     #平台最大线程数
     spider.thread.max=64
     #单任务默认最大线程数
     spider.thread.default=8
     #设置为true时定时任务才生效
     spider.job.enable=false
     #爬虫任务的工作空间
     spider.workspace=/data/spider
     #布隆过滤器默认容量
     spider.bloomfilter.capacity=1000000
     #布隆过滤器默认容错率
     spider.bloomfilter.error-rate=0.0001
     
     #死循环检测(节点执行次数超过该值时认为是死循环)默认值为5000
     #spider.detect.dead-cycle=5000
     
     spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
     spring.jackson.time-zone=GMT+8
     spring.jackson.serialization.fail_on_empty_beans=false
     
     spring.mvc.favicon.enabled=false
     
     spring.datasource.driver-class-name=com.mysql.jdbc.Driver
     spring.datasource.username=root
     spring.datasource.password=1234
     spring.datasource.url=jdbc:mysql://localhost:3306/spiderflow?useSSL=false&useUnicode=true&characterEncoding=UTF8&autoReconnect=true
     
     #JavaMailSender 邮件发送的配置
     spring.mail.protocol=smtp
     spring.mail.host=smtp.qq.com
     spring.mail.port=465
     spring.mail.username=xxxx@qq.com
     spring.mail.password=xxxx
     spring.mail.default-encoding=UTF-8
     spring.mail.properties.mail.smtp.auth=true
     spring.mail.properties.mail.smtp.starttls.enable=true
     spring.mail.properties.mail.smtp.starttls.required=true
     spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
     spring.mail.properties.mail.smtp.socketFactory.port=465
     spring.mail.properties.mail.smtp.socketFactory.fallback=false
     
     spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration,org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration
     
     #selenium 插件配置
     
     #设置chrome的WebDriver驱动路径,下载地址:http://npm.taobao.org/mirrors/chromedriver/,注意版本问题
     selenium.driver.chrome=E:/driver/chromedriver.exe
     #设置fireFox的WebDriver驱动路径,下载地址:https://github.com/mozilla/geckodriver/releases
     selenium.driver.firefox=E:/driver/geckodriver.exe
     
     #爬虫通知相关内容配置,可使用SpiderFlow中的变量名和以下变量名:currentDate:当前发送时间
     spider.notice.subject=spider-flow流程通知
     spider.notice.content.start=流程开始执行:{name},开始时间:{currentDate}
     spider.notice.content.end=流程执行完毕:{name},结束时间:{currentDate}
     spider.notice.content.exception=流程发生异常:{name},异常时间:{currentDate}
    
  4. 在web项目java文件下创建入口文件***Application

     @SpringBootApplication
     @EnableScheduling
     @MapperScan("org.spiderflow.*.mapper")
     public class SpiderApplication implements ServletContextInitializer{
    
     public static void main(String[] args) throws IOException {
         
         SpringApplication.run(SpiderApplication.class, args);
     }
    
     @Override
     public void onStartup(ServletContext servletContext) throws ServletException {
         //设置文本缓存1M
         servletContext.setInitParameter("org.apache.tomcat.websocket.textBufferSize", Integer.toString((1024 * 1024)));
     }
     
     @Bean
     public PaginationInterceptor paginationInterceptor() {
         return new PaginationInterceptor();
     }
     
     }
    
  5. web目录创建配置放行静态资源文件
    java文件下创建configuration文件夹,并创建ResourcesConfiguration

     * 配置放行静态资源文件
      * @author Administrator
      *
      */
     @Configuration
     public class ResourcesConfiguration implements WebMvcConfigurer{
    
     @Override
     public void addResourceHandlers(ResourceHandlerRegistry registry) {
         registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
     }
    
     //更改默认首页
     @Override
     public void addViewControllers(ViewControllerRegistry registry) {
         registry.addViewController("/").setViewName("/index2.html");
         registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
     }
    
     @Override
     public void addCorsMappings(CorsRegistry registry) {
         registry.addMapping("/**")
                 .allowedOrigins("*")
                 .allowedMethods("GET","POST","OPTIONS")
                 .allowCredentials(true);
     }
     }
    
  6. 创建核心module,关键类(service,model,mapper)

    service

     @Service
     public class SpiderFlowService extends ServiceImpl<SpiderFlowMapper, SpiderFlow> {
     @Autowired
     SpiderFlowMapper sfMapper;
     public IPage<SpiderFlow> selectSpiderPage(Page<SpiderFlow> page,String name){
         return sfMapper.selectSpiderPage(page,name);
     }
     }
    

    mapper

     public interface SpiderFlowMapper  extends BaseMapper<SpiderFlow> {
      @Select({
         "<script>",
         "select",
         "(select count(*) from sp_task where flow_id = sf.id and end_time is null) running",
         "from sp_flow sf",
         "<if test=\"name != null and name != ''\">",
         "where name like concat('%',#{name},'%')",
         "</if>",
         "order by create_date desc",
         "</script>"
     })
       IPage<SpiderFlow>  selectSpiderPage(Page<SpiderFlow> page, @Param("name") String name);
     }
    

    model

         @TableName("sp_flow")
         public class SpiderFlow {
         @TableId(type = IdType.UUID)
         private String id;
         /**
          * 定时任务表达式
          */
         private String cron;
         private String name;
         /**
          * xml流程图
          */
         private String xml;
     
         private String enabled;
     
         private Date createDate;
     
         private Date lastExecuteTime;
     
         private Date nextExecuteTime;
     
         /**
          * 定时执行的执行次数
          */
         private Integer executeCount;
     
         @TableField(exist = false)
         private Integer running;
     
     
         public SpiderFlow() {
         }
     
         public SpiderFlow(String id, String name) {
             this.id = id;
             this.name = name;
         }
     
         public String getId() {
             return id;
         }
     
         public void setId(String id) {
             this.id = id;
         }
     
         public String getName() {
             return name;
         }
     
         public void setName(String name) {
             this.name = name;
         }
     
         public String getXml() {
             return xml;
         }
     
         public void setXml(String xml) {
             this.xml = xml;
         }
     
         public String getCron() {
             return cron;
         }
     
         public void setCron(String cron) {
             this.cron = cron;
         }
     
         public String getEnabled() {
             return enabled;
         }
     
         public void setEnabled(String enabled) {
             this.enabled = enabled;
         }
     
         public Date getCreateDate() {
             return createDate;
         }
     
         public void setCreateDate(Date createDate) {
             this.createDate = createDate;
         }
     
         public Date getLastExecuteTime() {
             return lastExecuteTime;
         }
     
         public void setLastExecuteTime(Date lastExecuteTime) {
             this.lastExecuteTime = lastExecuteTime;
         }
     
         public Date getNextExecuteTime() {
             return nextExecuteTime;
         }
     
         public void setNextExecuteTime(Date nextExecuteTime) {
             this.nextExecuteTime = nextExecuteTime;
         }
     
         public Integer getExecuteCount() {
             return executeCount;
         }
     
         public void setExecuteCount(Integer executeCount) {
             this.executeCount = executeCount;
         }
     
         public Integer getRunning() {
             return running;
         }
     
         public void setRunning(Integer running) {
             this.running = running;
         }
         }
    
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容