IT技术篇中北软院创新实验室SpringBoot极简教程 · Spring Boot

SpringBoot 知识小总

2017-11-06  本文已影响89人  HikariCP

前言

这篇文章是我初学SpringBoot时开始记录的一篇博客。原本学习时是持续更新的,后来慢慢学习的过程中断更了 ……,在这里也贴出来了。说不定还是可以帮到别人的

application.properties

Springboot,classpath路径下的application.properties形式的配置文件中不可以写yaml格式的配置代码。如果写上不会报错,但是无效。application.yaml形式的配置文件中也不能写properties格式的配置代码。如果写上在springboot项目启动的时候会报错。

application.properties和application.yml文件可以放在一下四个位置:

同样,这个列表按照优先级排序,也就是说,src/main/resources/config下application.properties覆盖src/main/resources下application.properties中相同的属性,如图:

此外,如果你在相同优先级位置同时有application.properties和application.yml,那么application.yml里面的属性就会覆盖application.properties里的属性。


Profile 多环境配置

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

想要使用对应的环境,只需要在application.properties中使用spring.profiles.active属性来设置,值对应上面提到的{profile},这里就是指dev、prod这2个。

Pom.xml

如果pom.xml文件中已经继承了 spring-boot-starter-parent,而 spring-boot-starter-parent 又提供了 dependency-management 。那么我们可以忽略被选中依赖的版本(version元素)。

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

@Bean的作用

 @Configuration
 public class JedisClusterConfig {
 
     @Autowired
     private RedisProperties redisProperties;
 
     @Bean
     public JedisCluster getJedisCluster() {
         String[] serverArray = redisProperties.getClusterNodes().split(",");//获取服务器数组(这里要相信自己的输入,所以没有考虑空指针问题)
         Set<HostAndPort> nodes = new HashSet<>();
 
         for (String ipPort : serverArray) {
             String[] ipPortPair = ipPort.split(":");
             nodes.add(new HostAndPort(ipPortPair[0].trim(), Integer.valueOf(ipPortPair[1].trim())));
         }
 
         return new JedisCluster(nodes, redisProperties.getCommandTimeout());
     }
 
 }

注意:

Mybatis

<!-- 指定工作空间,要与接口名相同,源代码没有去看,猜测应该是通过"这里的namespace.下边方法的id"来定位方法的 -->
<mapper namespace="com.xxx.firstboot.mapper.UserMapper">
      
      <!-- 若不需要自动返回主键,将useGeneratedKeys="true" keyProperty="id"去掉即可(当然如果不需要自动返回主键,直接用注解即可) -->
   <insert id="insertUserWithBackId" parameterType="User" useGeneratedKeys="true" keyProperty="id" >
   <!-- useGeneratedKeys代表使用数据库自动自增的主键值填充到 作为参数插入的user对象的keyProperty属性id上 -->
         <![CDATA[
        INSERT INTO tb_user 
        (
            username,
            password
        )
        VALUES
        (
            #{username, jdbcType=VARCHAR},
            #{password, jdbcType=VARCHAR}
        )
        ]]>
    </insert>
     
 </mapper>

Swagger

  • @Api:用在类上,说明该类的作用
  • @ApiOperation:用在方法上,说明方法的作用
  • @ApiImplicitParams:用在方法上包含一组参数说明
  • @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
  • paramType:参数放在哪个地方
    • header-->请求参数的获取:@RequestHeader
    • query-->请求参数的获取:@RequestParam
    • path(用于restful接口)-->请求参数的获取:@PathVariable
    • body(不常用)
    • form(不常用)
  • name:参数名
  • dataType:参数类型
  • required:参数是否必须传
  • value:参数的意思
  • defaultValue:参数的默认值
  • @ApiResponses:用于表示一组响应
  • @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
  • code:数字,例如400
  • message:信息,例如"请求参数没填好"
  • response:抛出异常的类
  • @ApiModel:描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)
  • @ApiModelProperty:描述一个model的属性

maven package

maven项目借助于

<plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

打包之后生成的项目的jar包在项目根目录下生成的target目录下。
其中项目中所有配置文件及依赖的jar包(均在自动生成的lib目录下)项目的类文件编译生成的class文件。

Starts

可以创建自己的Starter,但名字格式不能是 spring-boot-starter-&,而是 &-spring-boot-starter。类似Maven插件的规则。

cmd运行fat jar

远程调试

运行fat jar(executable jar)
+ java -jar target/xxxx.jar    注意,是在项目路径下执行。
开启远程调试支持:
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,
address=8000,suspend=n -jar target/springbootpractice-0.0.1-SNAPSHOT.jar

Springdevtools

一些特定的资源改变时没有必要引起重启。有一些不会引起重启,但是会重加载。如果你想自定义的设置一下,可以使用 spring.devtools.restart.exclude 属性。如下:
spring.devtools.restart.exclude=static/&&,public/&&

如果想完全禁止自动重启,需要在调用 SpringApplication.run(..) 之前设置一个System属性。如下:

public static void main(String[] args) {
    System.setProperty("spring.devtools.restart.enabled", "false");
    SpringApplication.run(MyApp.class, args);
}

静态资源导入

需要注意:templates 对外可见。 static 被保护,并且这样引用找不到。templates 目录下的模板与 static 目录下的 assets,css,image,js 目录同级。

<script src="../static/assets/js/ace-extra.min.js"></script>

这样才可以:

<script src="/assets/js/ace-extra.min.js"></script>

或者使用 thymeleaf 语法:

<script th:src="@{/assets/js/ace-extra.min.js}"></script>

BootStrap 字体目标:

如图红圈中,内容在复制引用时排除在外。只需复制icon-minus即可。

<i class="icon-user orange"></i>
上一篇下一篇

猜你喜欢

热点阅读