SpringBoot项目的配置

配置SQLServer

//pom.xml
 <dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.2.1.jre8</version>
    <scope>runtime</scope>
    <!-- scope 从maven仓库拷贝过来时默认是test -->
</dependency>
//application.yml
spring:
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://172.26.1.4:1433;databaseName=MWBS_Demo4
    username: sa
    password: Pass2017

主要是 driver-class 和 url 的格式

热加载

只需引入这个jar包,按Ctrl+F9重新编译。参考来源:http://tengj.top/2017/06/01/springboot10/#spring-boot-devtools-%E5%AE%9E%E7%8E%B0%E7%83%AD%E9%83%A8%E7%BD%B2

<!-- 热加载  按Ctrl+F9 重新编译即可 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

lombok

1、 引入依赖

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

2、 安装IDEA插件

1711985-0d5cbd3d6a74c3e3.PNG
lombok plugin

3、 在实体bean类上加上@Data @Getter @Setter注解,可以自动给实体的属性设置get set toString方法。

4、 @Slf4j 注解还能引入log实例,代替这种常规方式 private final Logger logger = LoggerFactory.getLogger(APIController.class);

异常处理@ControllerAdvice

1、 假如我在程序中抛出了FrontException(前端传过来的参数有问题),那么返回给调用方的信息就是500。
但是我想程序在抛出异常时,返回给调用方是我自己定义的格式该怎么办?

@PostMapping("/query")
public ResultVO< List<QueryVO>> query(@RequestParam(value = "warningTitle",defaultValue = "") String warnTitle,
                      @RequestParam(value = "warningType") String warnType,
                      @RequestParam(value = "activated") boolean isActivated){
    log.info("【进入查询方法】warnName={}",warnTitle);
    if (StringUtils.isEmpty(warnType)) {
        log.error("【查询方法-预警类型不能为空】warnType={}",warnType);
        throw  new FrontException(ParamEnum.WARN_TYPE_IS_NULL);
    }else if(!WarnTypeEnum.isWarnType(warnType)){
        log.error("【查询方法-预警类型错误】 warnType={}",warnType);
        throw  new FrontException(ParamEnum.WARN_TYPE_ERROR);
    }

    List<WarnEntity> warnEntities = warnService.query(warnTitle, warnType, isActivated);
    log.info("【查询方法-查询结果集】共 "+warnEntities.size()+" 条");

    List<QueryVO> queryVOList = WarnEntity2QueryVOTransfer.transfer(warnEntities);
    return ResultVOUtil.success(queryVOList);
}

2、 新建一个@ControllerAdvice注解的类

@ControllerAdvice能拦截到异常抛出的点,捕获它。

package com.twx.handler;

import com.twx.VO.ResultVO;
import com.twx.exception.FrontException;
import com.twx.utils.ResultVOUtil;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@ControllerAdvice
public class FrontExceptionHandler {

    @ExceptionHandler(FrontException.class)
    @ResponseBody
    public ResultVO handlerFrontException(FrontException e) {
        return ResultVOUtil.error(e.getCode(), e.getMessage());
    }
}

Gson

  1. 有时候,我获取到一个json字符串,但是我只想获取其中一个属性值。可以这样:
JsonObject obj = new JsonParser().parse(jsonParam).getAsJsonObject();
//将jsonParam中的提取出来
JsonElement jsonElement = obj.get("");
int result = jsonElement.getAsInt();
  1. @SerializedName 用法

假如json数据长这样

{
    "AlterType`:"",
    "CustomsCode":"",
    "ExamAddrCode":"",
    "WarningThreshold":""

由于这样子的json数据和java命名规范不一致(驼峰命名),所以我们要告诉gson,它原来是怎么样的。

@Data
public class JsonParamDto {

    @SerializedName("AlertType")
    private String alertType;
    @SerializedName("CustomsCode")
    private String customsCode;
    @SerializedName("ExamAddrCode")
    private String examAddrCode;
    @SerializedName("WarningThreshold")
    private String warningThreshold;
}

SpringBoot 打war包

别以为只改改pom文件中的配置就OK了。虽然mvn会帮你打成war包的形式,但是当你放进tomcat运行时,是会报错的。

要想能正确运行,需要做如下步骤:

1、 修改pom.xml文件

<groupId>com.twx</groupId>
<artifactId>WarnSys</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>  //这里改成war 默认是jar

<!--scope含义:-->
    <!--compile:默认就是compile.表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中.-->
    <!--test: 表示依赖项目仅仅参与测试相关的工作-->
    <!--runntime: 无需参与项目的编译,不过后期的测试和运行周期需要其参与-->
    <!--provided:  打包的时候可以不用包进去。其余功能等同 compile.-->
<!-- tomcat scope改成 provided -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

2、 修改启动类

让启动类继承 类SpringBootServletInitializer,然后重写configure(SpringApplicationBuilder builder)

@SpringBootApplication
@MapperScan("com.twx.db")
public class SpringBootEtlApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringBootEtlApplication.class);
    }

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

注意: 如果此时仍在开发阶段,直接运行SpringBootEtlApplication main() 会报如下错的。
Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletContext

正确的做法是: 在 terminal中以命令 mvn spring-boot:run 运行
(我后续需要再验证。现在我是把项目添加到了本地tomcat中的。如果不添加,直接mvn spring-boot:run不知道行不行)

SpringBoot项目配置Redis的步骤如下: 1. 首先,在pom.xml文件中添加Redis的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.7.3</version> </dependency> ``` 这将引入SpringBoot对Redis的支持。 2. 然后,在application.yml或application.properties配置文件中进行相应的Redis配置。你可以配置Redis的主机地址、端口号、密码等信息。例如: ```yaml spring: redis: host: localhost port: 6379 password: your_password # 其他配置项 ``` 3. 接下来,你需要创建一个配置类来配置Redis连接工厂。在这个配置类上使用`@Configuration`注解,并使用`@EnableCaching`注解开启缓存支持。你还可以通过`@Bean`注解创建一个`RedisTemplate`实例,并配置序列化器等参数。例如: ```java @Configuration @EnableCaching public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(connectionFactory); // 配置序列化器等参数 // ... return redisTemplate; } } ``` 4. 最后,在启动类上加上`@SpringBootApplication`注解,并在类上面加上`@EnableCaching`注解开启缓存支持。这样就完成了Redis的配置。例如: ```java @SpringBootApplication @EnableCaching public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } } ``` 这样,你就成功地在SpringBoot项目配置了Redis。你可以根据实际需求,通过Redis来缓存频繁使用的数据,提高查询速度。在实际项目中,例如博客项目,可以将文章的浏览量存储到Redis中,提高查询效率。同时,在秒杀场景下也可以使用Redis来处理高并发请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值