springboot-1-入门

springboot-1-入门

1、springboot简介,背景

简化Spring应用开发的一个框架;

整个Spring技术栈的一个大整合;

J2EE开发的一站式解决方案;

2、极简helloworld

流程:

使用spring initializr创建springboot新项目

在主程序的同级目录下创建包

  • control包
  • dao包
  • pojo包
  • service包

创建一个control

@Controller
public class HelloController {

    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        return "Hello World!";
    }
}

直接运行主程序即可

@SpringbootApplication

//@SpringBootApplication
//等与springboot的配置类 + 自动配置开启 + 组件扫描范围
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.wang")
public class SpringbootSpringboot1Application {

主程序原理

之前:

public class SpringbootSpringboot1Application {

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

}

之后:

public class MainApplication {
    public static void main(String[] args) {
        //1、返回IOC容器
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
        //2、查看IOC容器中的bean
        String[] beanDefinitionNames = run.getBeanDefinitionNames();
        for (String i:beanDefinitionNames){
            System.out.println(i);
        }
        //3、从容器中获取自定义的bean
        Pet pet = run.getBean("pet", Pet.class);
        System.out.println("pet------------>>>>>"+pet);
    }
}

可以理解为得到的run实例化对象就是一个IOC容器可以从里面获取到所有bean实例

3、yaml使用

流程:

导入提示配置依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>


 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!--这个提示包是开发工具,不需要打包-->
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-configuration-processor</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

创建pojo

@Data
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
	
	private String userName;
	private Boolean boss;
	private Date birth;
	private Integer age;
	private Pet pet;
	private String[] interests;
	private List<String> animal;
	private Map<String, Object> score;
	private Set<Double> salarys;
	private Map<String, List<Pet> allPets;
}

@Data
public class Pet {
	private String name;
	private Double weight;
}

对应的yaml文件

# yaml表示以上对象
person:
  userName: zhangsan
  boss: false
  birth: 2019/12/12 20:12:33
  age: 18
  pet: 
    name: tomcat
    weight: 23.4
  interests: [篮球,游泳]
  animal: 
    - jerry
    - mario
  score:
    english: 
      first: 30
      second: 40
      third: 50
    math: [131,140,148]
    chinese: {first: 128,second: 136}
  salarys: [3999,4999.98,5999.99]
  allPets:
    sick:
      - {name: tom}
      - {name: jerry,weight: 47}
    health: [{name: mario,weight: 47}]

注意:

1、在添加了这个配置之后不会立刻出现提示,需要重启项目

2、pojo类上加了@ConfigurationProperties(prefix = "person")之后必须要还要加上一个@Component,让IOC容器能够扫描到这个类

@ConfigurationProperties

该注解有一个prefix属性,通过指定的前缀,绑定配置文件中的配置,该注解可以放在类上,也可以放在方法上

可以从注解说明中看到,当将该注解作用于方法上时,如果想要有效的绑定配置,那么该方法需要有 @Bean 注解且所属Class需要有 @Configuration 注解。

5\热部署(dev-tool)

Restart VS Reload

<!--dev-tool-自动重启,ctrl+F9快捷键自动重启-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

ctrl+F9快捷键快速重启

如果需要真正的热部署需要付费加载JRebel插件

6\JSR303验证

在pojo的类的对应属性使用JSR303验证的对应注解,可以保证无论哪种方式创建这个pojo都会进行这个注解的验证,从而达到验证的效果

@Data
@Validated
public class Person {
    private String name;
    private Integer age;
    /*验证这个属性是否为邮箱格式,message属性为报错信息(默认为不是一个合法的邮箱格式*/
    @Email(message = "邮箱格式有误")
    private String email;
}

还有其他验证

Null检查
@Null(message = "")       验证对象是否为null
@NotNull(message = "")    验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank(message = "")   检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty(message = "")  检查约束元素是否为NULL或者是EMPTY.
 
Booelan检查
@AssertTrue(message = "")     验证 Boolean 对象是否为 true  
@AssertFalse(message = "")    验证 Boolean 对象是否为 false  
 
长度检查
@Size(min=, max=,message = "") 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  
@Length(min=, max=,message = "") Validates that the annotated string is between min and max included.
 
日期检查
@Past(message = "")           验证 Date 和 Calendar 对象是否在当前时间之前  
@Future(message = "")     	验证 Date 和 Calendar 对象是否在当前时间之后  
@Pattern(regexp = "",message = "")    	验证 String 对象是否符合正则表达式的规则
 
数值检查
	建议使用在包装类型(Integer这类),不建议使用在int类型上,
	因为表单值为“”时无法转换为int,但可以转换为Stirng为"",Integer为null
@Min(message = "")     验证 Number 和 String 对象是否大等于指定的值  
@Max(message = "")     验证 Number 和 String 对象是否小等于指定的值  
@DecimalMax(message = "") 值不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度
@DecimalMin(message = "") 值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度
@Digits(message = "")     验证 Number 和 String 的构成是否合法  
@Digits(integer=,fraction=,message = "") 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。
 
@Range(min=, max=,message = "") 检查数字是否介于min和max之间.

@Valid  递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证)
    
@CreditCardNumber(message = "") 信用卡验证
@Email(message = "")  验证是否是邮件地址,如果为null,不进行验证,算通过验证。
@ScriptAssert(lang= ,script=, alias=,message = "")
    
@URL(protocol=,host=, port=,regexp=, flags=,message = "")

7\多环境配置

properties文件时:一个主要配置文件,去调用另外俩(多)个配置文件

yaml文件时:用---分割代码块,第一个代码块去调用另外两(多)个代码块

properties作为配置文件时

在resource下创建三个properties文件:

  • application.properties
  • application-dev.properties
  • application-test.properties

application.properties文件中配置我们需要的另外俩格配置文件

#比如在配置文件中指定使用dev环境,我们可以通过设置不同的端口号进行测试;
#我们启动SpringBoot,就可以看到已经切换到dev下的配置了;
spring.profiles.active=dev

yaml作为代码块时


server:
  port: 8081
#选择要激活那个环境块
spring:
  profiles:
    active: prod
---
server:
  port: 8083
spring:
  profiles: dev #配置这个环境的名称
---
server:
  port: 8084
spring:
  profiles: prod  #配置这个环境的名称
posted @ 2021-06-12 15:23  Coder-Wang  阅读(61)  评论(0编辑  收藏  举报