java从零搭建项目需要的各种依赖配置如下

首先使用的java版本是java8、maven是3.6.1

0、父依赖选择为:引入这个的好处是其子工程引入依赖时可以不用写版本

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.8.RELEASE</version>
</parent>

1、提前定义一些版本属性

实验中发现这样定义后其实再引入依赖的时候就不用写版本了

<properties>
    <!--spring cloud版本-->
    <spring.cloud-version>Hoxton.SR9</spring.cloud-version>
    <!--spring cloud alibaba版本-->
    <alibaba.cloud-version>2.2.5.RELEASE</alibaba.cloud-version>
    <!--jdk版本-->
    <java.version>1.8</java.version>
    <!--跳过测试-->
    <skipTests>true</skipTests>
    <lombok.version>1.18.8</lombok.version>
    <knife4j.version>2.0.2</knife4j.version>
    <mybatis.plus.version>3.1.1</mybatis.plus.version>
</properties>

@SpringBootApplication 所需要的依赖:注意此处可以忽略版本

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

@SpringBootTest、@Test所需依赖为:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
    </exclusions>
</dependency>

@Data、@NoArgsConstructor、@AllArgsConstructor、@EqualsAndHashCode、@Slf4j

需要安装的依赖为:

<dependency>
   <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
</dependency>

@TableName、@TableId、@TableId、BaseMapper、@MapperScan、IService、QueryWrapper、Page、IPage

需要安装的依赖为:

<dependency>
   <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>${mybatis.plus.version}</version>
</dependency>

datasource: driver-class-name: com.mysql.jdbc.Driver配置mysql需要的依赖:

在pom.xml中添加如下依赖
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

在application.yml中添加数据库连接配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.211.136:3306/leadnews_admin?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=&serverTimezone=Asia/Shanghai
    username: root
    password: 123456

在启动类上添加mapper文件夹所在的路径
@MapperScan(basePackages = "com.jjw.mapper")

@Autowired、@GetMapping、@DeleteMapping、@PutMapping、@Service、@RestController、@CrossOrigin、@RequestMapping、@PostMapping、@RestControllerAdvice(对全局异常进行拦截的)、@ExceptionHandler(决定用那个异常进行处理的)上边这个spring-boot-starter-web依赖包里

@ApiModel(value = “AdUser”, description = “管理员用户信息表”) 加到类上、@ApiModelProperty(加到属性上) @Api(value = “MyTest”, tags =“测试案例”, description = “测试案例1”)加到controller中的类上的,@ApiOperation(value = “mytest”, notes = “进行测试的”, tags = “测试案例”)加到controller中的方法上的 swagger需要的依赖

<!--swagger-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

另外需要一个配合类,内容如下:
package com.jjw.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.HashSet;

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {

   @Bean
   public Docket buildDocket() {
      HashSet<String> strings = new HashSet<>();
      strings.add("application/json");

      return new Docket(DocumentationType.SWAGGER_2)
              .apiInfo(buildApiInfo())
              //设置返回值数据类型为json
              .produces(strings)
              .select()
              // 要扫描的API(Controller)基础包
              // 可以只扫到controller这个包即,com.jjw.controller
              .apis(RequestHandlerSelectors.basePackage("com.jjw"))
              .paths(PathSelectors.any())
              .build();
   }

   private ApiInfo buildApiInfo() {
      Contact contact = new Contact("jjw","","");
      return new ApiInfoBuilder()
              .title("jjw-平台管理API文档")
              .description("平台管理服务api")
              .contact(contact)
              .version("1.0.0").build();
   }
}

打开方式:http://localhost:7000/swagger-ui.html

knife4j的依赖(效果是和swagger一样的但功能强大):

<dependency>
   <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>2.0.2</version>
</dependency>

配置类:
package com.jjw.config;

import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.HashSet;

@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfiguration {

   @Bean
   public Docket buildDocket() {
      HashSet<String> strings = new HashSet<>();
      strings.add("application/json");
      Docket docket=new Docket(DocumentationType.SWAGGER_2)
              .apiInfo(buildApiInfo())
              //设置返回数据类型
              .produces(strings)
              //分组名称
              .groupName("1.0")
              .select()
              //这里指定Controller扫描包路径
              .apis(RequestHandlerSelectors.basePackage("com.jjw.controller"))
              .paths(PathSelectors.any())
              .build();
      return docket;
   }
   private ApiInfo buildApiInfo() {
      Contact contact = new Contact("jjw","","");
      return new ApiInfoBuilder()
              .title("jjw-平台管理API文档")
              .description("平台管理服务api")
              .contact(contact)
              .version("1.0.0").build();
   }
}

其他参数的使用和swagger一样

@EnableDiscoveryClient//启用注册与发现

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

spring:
  application:
    name: leadnews-admin
  profiles: dev
  cloud:
    nacos:
      server-addr: 192.168.211.136:8848
      discovery:
        server-addr: ${spring.cloud.nacos.server-addr}

jwt

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>

spring-cloud-starter-gateway

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

这里边需要注意的是如果,引入此依赖,并且此服务中用到其他的服务中的包,且其他服务中的包又引入或者包含spring-boot-starter-web这个依赖,则需要将其排除掉,例如:
<dependency>
    <groupId>com.jjw</groupId>
    <artifactId>result-content</artifactId>
    <version>1.0-SNAPSHOT</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </exclusion>
        <!--要排除spring-boot-starter-web这个依赖,但是result-content中包含的swagger-content这个
        依赖又依赖于spring-boot-starter-web,而我只需要result-content中的内容,所以将这两个依赖都排除了-->
        <exclusion>
            <groupId>com.jjw</groupId>
            <artifactId>swagger-content</artifactId>
        </exclusion>
    </exclusions>
</dependency>

@EnableFeignClients、@FeignClient(name=“leadnews-admin”,path = “/admin”)

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

默认的feign调用httpUrlConnection每次都会创建一个链接对象。效率较低。所以使用okhttp来替换,它可以使用连接池。调用效率较高。(不用也行,他只是起到提高效率的作用)

<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-okhttp</artifactId>
</dependency>

在需要用到feign的微服务中配置如下即可:
feign:
  client:
    config:
      default: # default指定的是所有的 被调用方  都设置为该配置超时时间,可以设置为某一个微服务对应的服务名
        connectTimeout: 5000 # 链接超时时间
        readTimeout: 5000 # 读取的超时时间
  okhttp:
    enabled: true
  httpclient:
    enabled: false

fastdfs

<dependency>
   <groupId>com.github.tobato</groupId>
   <artifactId>fastdfs-client</artifactId>
   <version>1.26.5</version>
</dependency>
单独测试时只需要在yml中有如下配置即可:	
fdfs:
  so-timeout: 1501
  connect-timeout: 601
  thumb-image:             #缩略图生成参数
    width: 150
    height: 150
  tracker-list:            #TrackerList参数,支持多个
    - 192.168.211.136:22122
多个服务一起配置的话很有可能需要多一个数据库方面的配置如下:
spring:
  profiles:
    active: dev
---
server:
  port: 9005
spring:
  application:
    name: leadnews-dfs
  profiles: dev
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.211.136:3306/你的数据库名称?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=&serverTimezone=Asia/Shanghai
    username: root
    password: 123456

  cloud:
    nacos:
      server-addr: 192.168.211.136:8848
      discovery:
        server-addr: ${spring.cloud.nacos.server-addr}
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB
# fastdfs的配置
fdfs:
  so-timeout: 1501
  connect-timeout: 601
  thumb-image:             #缩略图生成参数
    width: 150
    height: 150
  tracker-list:
    - 192.168.211.136:22122 #TrackerList参数,支持多个
  web-server-url: http://192.168.211.136/  # 设置前缀路径
logging:
  level.com: debug

fastjson的使用点击查看具体使用过程

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.58</version>
</dependency>

kafka的 只需在消费者中使用这个@KafkaListener(topics = {“jjw”})

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka-test</artifactId>
    <scope>test</scope>
</dependency>
# 配置,yml中
spring:
  kafka:
    # 配置连接到服务端集群的配置项 ip:port,ip:port
    bootstrap-servers: 192.168.211.136:9092
    consumer:
      #      auto-commit-interval: 100
      auto-offset-reset: earliest
      #      enable-auto-commit: true
      group-id: test-consumer-group  # 控制是否按组接收消息
      # 默认值即为字符串
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      # 默认值即为字符串
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
    producer:
      batch-size: 16384
      buffer-memory: 33554432
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      retries: 0
      value-serializer: org.apache.kafka.common.serialization.StringSerializer

xxl-job-core定时任务:@XxlJob(value=“teskTask”)

<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.1.2</version>
</dependency>

elasticsearch @Document(indexName = “article”)、@Id、

@Field(type = FieldType.Text, index = true,analyzer = “ik_smart”, searchAnalyzer = “ik_smart”)
解释如下:

  • Field:注解用于建立ES中的字段的映射
    • type:指定该字段的数据类型
    • index: 标识是否要索引,默认是true
    • analyzer:指定建立倒排索引的时候使用的分词器
    • searchAnalyzer:指定搜索的时候使用的分词器,这个可以不用设置,如果不设置则默认和analyzer使用同一个分词器
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>            
</dependency>

yml中和cloud平级
elasticsearch:
    rest:
      uris:
        - http://192.168.211.136:9200

kafka streams

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-streams</artifactId>
    <version>2.5.1</version>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值