Springboot日常使用--常见pom依赖(pom依赖gav)

这里只是总结下各个组件常用依赖 基于spring2.X  可能因为版本不同有所区别,实际使用时自由发挥

TIPS:自用,免得用的时候要找 遇到一个加一个  这里版本冲突自行考虑 我只是搬运工

一.数据库相关

1.mysql驱动

        
        
            mysql
            mysql-connector-java
            5.1.41
        

2.mybatis

        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.1.0
        

二.SpringBoot相关

0.指定编码配置版本属性

    
        UTF-8
        UTF-8
        1.8
    

1.这个必备的父依赖

    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.5.RELEASE
        
    

2.一般web开发需要

其中看自己需要,是否排除内置的日志和tomcat

        
            org.springframework.boot
            spring-boot-starter
            
        
        
            org.springframework.boot
            spring-boot-starter-web
            
            
        

3.单元测试junit

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

具体使用

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class UserTest {

    @Autowired
    private UserService userService;

    @Test
    public void testGet(){
        Users users = userService.gerUserById(1);
        System.out.println(users);
    }
}

4.AOP

        
        
            org.springframework.boot
            spring-boot-starter-aop
        

相应切面类实现例子

@Aspect
@Component
public class ServiceLogAspect {

    public static final Logger log =
            LoggerFactory.getLogger(ServiceLogAspect.class);

    /**
     * AOP通知:
     * 1. 前置通知:在方法调用之前执行
     * 2. 后置通知:在方法正常调用之后执行
     * 3. 环绕通知:在方法调用之前和之后,都分别可以执行的通知
     * 4. 异常通知:如果在方法调用过程中发生异常,则通知
     * 5. 最终通知:在方法调用之后执行
     */

    /**
     * 切面表达式:
     * execution 代表所要执行的表达式主体
     * 第一处 * 代表方法返回类型 *代表所有类型
     * 第二处 包名代表aop监控的类所在的包
     * 第三处 .. 代表该包以及其子包下的所有类方法
     * 第四处 * 代表类名,*代表所有类
     * 第五处 *(..) *代表类中的方法名,(..)表示方法中的任何参数
     *
     * @param joinPoint
     * @return
     * @throws Throwable
     */
    @Around("execution(* com.xuxu.service.impl..*.*(..))")
    public Object recordTimeLog(ProceedingJoinPoint joinPoint) throws Throwable {

        log.info("====== 开始执行 {}.{} ======",
                        joinPoint.getTarget().getClass(),
                        joinPoint.getSignature().getName());

        // 记录开始时间
        long begin = System.currentTimeMillis();

        // 执行目标 service
        Object result = joinPoint.proceed();

        // 记录结束时间
        long end = System.currentTimeMillis();
        long takeTime = end - begin;

        if (takeTime > 3000) {
            log.error("====== 执行结束,耗时:{} 毫秒 ======", takeTime);
        } else if (takeTime > 2000) {
            log.warn("====== 执行结束,耗时:{} 毫秒 ======", takeTime);
        } else {
            log.info("====== 执行结束,耗时:{} 毫秒 ======", takeTime);
        }

        return result;
    }

}

 

三.常用第三方工具(apache,lombok)

1.commons

		
		
			commons-codec
			commons-codec
			1.11
		
		
			org.apache.commons
			commons-lang3
			3.4
		
		
			org.apache.commons
			commons-io
			1.3.2
		

2.lombok

        
            org.projectlombok
            lombok
            1.16.18
            provided
        

3.log4j日志

        
        
            org.slf4j
            slf4j-api
            1.7.21
        
        
            org.slf4j
            slf4j-log4j12
            1.7.21
        

引入前先在springboot.starter依赖里排除自带logging

resouce文件中加入 log4j.properties

log4j.rootLogger=DEBUG,stdout,file
log4j.additivity.org.apache=true

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.threshold=INFO
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-5p %c{1}:%L - %m%n

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.DatePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.file.Threshold=INFO
log4j.appender.file.append=true
log4j.appender.file.File=/workspaces/logs/foodie-api/imooc.log

4.fastjson

        
        
            com.alibaba
            fastjson
            1.1.29
        

5.jackson

        
        
            org.codehaus.jackson
            jackson-mapper-asl
            1.9.13
        
        
            com.fasterxml.jackson.core
            jackson-databind
        

6.google guava

        
        
            com.google.guava
            guava
            20.0
        

四.辅助类工具

1.swagger-ui接口文档

        
        
            io.springfox
            springfox-swagger2
            2.4.0
        
        
            io.springfox
            springfox-swagger-ui
            2.4.0
        
        
            com.github.xiaoymin
            swagger-bootstrap-ui
            1.6
        

需要配置config配置文件

@Configuration
@EnableSwagger2
public class SwaggerConfig {
//    http://localhost:8080/swagger-ui.html     原路径
//    http://localhost:8080/doc.html     原路径

    // 配置swagger2核心配置 docket
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)  // 指定api类型为swagger2
                .apiInfo(apiInfo())                 // 用于定义api文档汇总信息
                .select()
                .apis(RequestHandlerSelectors
                        .basePackage("com.xuxu.controller"))   // 指定controller包
                .paths(PathSelectors.any())         // 所有controller
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("swagger-api")        // 文档页标题
                .contact(new Contact("xuxu",
                        "https://www.xuxu.com",
                        "[email protected]"))        // 联系人信息
                .description("xuxu提供的api文档")  // 详细信息
                .version("1.0.1")   // 文档版本号
                .termsOfServiceUrl("https://www.xuxu.com") // 网站地址
                .build();
    }
}

接口和实体类上使用注解列子

@ApiModel(value = "用户业务对象",description = "从客户端传入用户信息数据")
@Data
public class UserBO {
    @ApiModelProperty(value = "用户名",name="username",example = "xuxu",required = true,dataType ="String")
    private String username;
    @ApiModelProperty(value = "密码",name="password",example = "12345",required = true)
    private String password;
    @ApiModelProperty(value = "确认密码",name="confirmPassword",example = "12345",required = true)
    private String confirmPassword;
}
@Api(value = "用户接口",tags = {"用于用户注册相关接口"})
@RestController
public class UserController {
    @Autowired
    private UserService userService;

    @ApiOperation(value = "查询用户名是否存在",notes = "查询用户名是否存在",httpMethod = "GET")
    @GetMapping("/queryUsernameExist/{username}")
    public IMOOCJSONResult queryUsernameExist(@PathVariable("username") String username){
        if(StringUtils.isBlank(username)){
            return IMOOCJSONResult.errorMsg("用户名为空");
        }
        boolean result = userService.queryUsernameExist(username);
        if(result){
            return IMOOCJSONResult.errorMsg("用户名已存在");
        }
        return IMOOCJSONResult.ok();
    }
    @ApiOperation(value = "用户注册",notes = "用户注册",httpMethod = "POST")
    @PostMapping("/register")
    public IMOOCJSONResult register(@RequestBody UserBO userBO){
        String username =userBO.getUsername();
        String password = userBO.getPassword();
        String comfirmPwd = userBO.getConfirmPassword();

        if(StringUtils.isBlank(username)
                ||StringUtils.isBlank(password)
                ||StringUtils.isBlank(comfirmPwd)){
            return IMOOCJSONResult.errorMsg("参数不能为空");
        }
        Users user = userService.register(userBO);
        return IMOOCJSONResult.ok(user);
    }
}

Springboot日常使用--常见pom依赖(pom依赖gav)_第1张图片

 

 

 

你可能感兴趣的:(#,日常开发百宝箱)