抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

使用IDEA创建一个简单的SpringBoot项目(四)

剩下的都是些简单的东西了,也不需要什么代码,所以就像笔记一样。

Spring-boot多环境配置

我们都知道application.properties是配置文件,它里面有一个属性用于指定配置文件:

#这里的dev是application-dev.properties文件后面的那个字段
#我这里还可以是pro的生产环境 test的测试环境
spring.profiles.active=dev
#spring.profiles.active=test
#spring.profiles.active=pro

拷贝多份即可

如何验证?更改下端口进行测试,比如application-dev.properties内容:

#端口号修改
server.port=8081

然后访问下看是不是端口修改了。

Spring-boot跨域访问

可以使用过滤器实现,也可以是Config注解,详看:https://www.jianshu.com/p/e57ed1ee3070

import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Component
public class CorsFilter implements Filter {
    
    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
                         FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE,PUT");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
        chain.doFilter(req, res);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
    }

}

此时再访问,就是不一样的了

Spring-boot数据验证

User类加上一些注解:

public class User {
    private Integer id;

    //验证不为空
    //验证长度2-8
    @NotNull(message = "用户名为空")
    @Size(min = 2,max = 8,message = "用户长度2-8位")
    private String name;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

添加一个入口:

@RequestMapping("user")
@ResponseBody
public User user(@Valid User user) {
    //TODO 具体业务逻辑
    return user;
}

然后可以访问试试。需要验证的参数加上注解@Valid。

常见的字段注解如下:

@null 验证对象是否为空
@notnull 验证对象是否为非空
@asserttrue 验证 boolean 对象是否为 true
@assertfalse 验证 boolean 对象是否为 false
@min 验证 number 和 string 对象是否大等于指定的值
@max 验证 number 和 string 对象是否小等于指定的值
@decimalmin 验证 number 和 string 对象是否大等于指定的值,小数存在精度
@decimalmax 验证 number 和 string 对象是否小等于指定的值,小数存在精度
@size 验证对象(array,collection,map,string)长度是否在给定的范围之内
@digits 验证 number 和 string 的构成是否合法
@past 验证 date 和 calendar 对象是否在当前时间之前
@future 验证 date 和 calendar 对象是否在当前时间之后
@pattern 验证 string 对象是否符合正则表达式的规则
@Email 验证邮箱

实际例子:

@size (min=3, max=20, message="用户名长度只能在3-20之间")
@size (min=6, max=20, message="密码长度只能在6-20之间")
@pattern (regexp="[a-za-z0-9._%+-]+@[a-za-z0-9.-]+\\.[a-za-z]{2,4}", message="邮件格式错误")
@Length(min = 5, max = 20, message = "用户名长度必须位于5到20之间")
@Email(message = "比如输入正确的邮箱")
@NotNull(message = "用户名称不能为空")
@Max(value = 100, message = "年龄不能大于100岁")
@Min(value= 18 ,message= "必须年满18岁!" )
@AssertTrue(message = "bln4 must is true")
@AssertFalse(message = "blnf must is falase")
@DecimalMax(value="100",message="decim最大值是100")
DecimalMin(value="100",message="decim最小值是100")
@NotNull(message = "身份证不能为空")
@Pattern(regexp="^(\\d{18,18}|\\d{15,15}|(\\d{17,17}[x|X]))$", message="身份证格式错误")

你可以试试访问:

http://127.0.0.1:8080/user

http://127.0.0.1:8080/user?name=1

http://127.0.0.1:8080/user?name=11

然后看控制台的log,具体不演示了,如果你想看更多,推荐:https://blog.csdn.net/jiaobuchong/article/details/74094155

Spring-boot单元测试

先添加依赖包:

//单元测试jar包
compile ("org.springframework.boot:spring-boot-starter-test")

然后在这个位置创建一个Test类

内容为:

@RunWith(SpringJUnit4ClassRunner.class)
//指向启动类
@SpringBootTest(classes = UnitApp.class)
@WebAppConfiguration
public class Test {

    @Autowired
    private UserMapper userMapper;

    @org.junit.Test
    public void testUnitController(){
        User user=userMapper.selectUserById(1);
        System.out.println("结果"+user);
    }

}

主要是那3个注解,指定Unit的Runner,指定启动的app类。很容易理解,不多记录了。不玩Spring-boot了,平时很少用到,下次说不定这个又落伍了?

源代码:https://github.com/Anr-C/SpringBoot


本站由以下主机服务商提供服务支持:

0条评论

发表评论