springboot入门

1.介绍springboot2:

springboot2与1的最大区别在于2是根据java8的新特性进行了更新,所以要求使用jdk1.8版本及以上、maven3.3版本及以上、idea2019.1.2版本及以上

2.入门:

官网教程:https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.first-application.run

  1. 检查你的jdk和maven版本,并将idea的默认maven设置为自己的本地maven(在setting的build里面)
  2. 创建pom:在pom.xml中添加这个
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
    </parent>
  1. 添加依赖:
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  1. 编写程序入口,然后编写control测试,只要编写完运行程序入口即可
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class,args);
    }
}

注:

  1. springboot提供了方便的配置修改:
    在resource文件夹下编写applicationContexe.properties配置文件可修改如:
     server.port= 8888

官方文档查询相关配置:https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties

  1. springboot可简化部署:
    添加以下代码后自动将代码打包成jar包,直接在目标服务器执行即可。
 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

3. springboot特性:

3.1 依赖管理:

创建springboot项目,首先要导入一个父依赖:

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

他的父依赖:
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.5.4</version>
  </parent>

作用:spring-boot-dependencies中规定了各种jar包的版本号,实现自动的版本仲裁。
注:如果导入了非版本仲裁的jar包,则需要写明版本号。
可通过修改properties可以设置自己想要的版本号:

 <properties>
        <mysql.version>5.1.43</mysql.version>
</properties>

starter场景启动器:
可以看到这里我们无需导入版本号:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
</dependency>

1、见到很多 spring-boot-starter-* : *就某种场景
2、只要引入starter,这个场景的所有常规需要的依赖我们都自动引入
3、SpringBoot所有支持的场景

https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter

4、见到的 *-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器。
5、所有场景启动器最底层的依赖

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.5.4</version>
      <scope>compile</scope>
    </dependency>

注:可以看到spring-boot-starter-web中为我们配置好了json、tomcat、webmvc等jar包。

3.2 自动配置:

springboot为我们自动配置好了:
● tomcat
● springMVC
● web常见功能
● 默认的包结构:主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来,如果文件写在了主程序外边则无法被扫描到(想要改变扫描路径:@SpringBootApplication(scanBasePackages=“com.atguigu”))
● 各种配置拥有默认值
● 按需加载所有自动配置项: 引入了哪些场景这个场景的自动配置才会开启
、SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面。

4.容器功能:

4.1 添加组件:

@Configuration
用这个注解代替了原来的xml文件中创建bean并对属性赋值的过程

  • 1、配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的
  • 2、配置类本身也是组件
  • 3、proxyBeanMethods:代理bean的方法
@Configuration
public class config {
    @Bean
    public user user01(){
        return new user("smith",30);
    }
}

Full和Lite模式:
配置类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断(轻量级)
配置类组件之间有依赖关系,方法会被调用得到之前单实例组件,用Full模式

Full:(proxyBeanMethods = true)【保证每个@Bean方法被调用多少次返回的组件都是单实例的】
Lite:(proxyBeanMethods = false)【每个@Bean方法被调用多少次返回的组件都是新创建的】
组件依赖必须使用Full模式默认。其他默认是否Lite模式

@Import
使用这个注解给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名

@Import({User.class, DBHelper.class})
@Configuration(proxyBeanMethods = true)
public class config {

@Conditional
条件配置,根据注解的条件来判断是否进行装配。
可以标记在类上也可以标记在方法上。
@ConditionalOnBean(仅仅在当前上下文中存在某个对象时,才会实例化一个Bean)
@ConditionalOnMissingClass(某个class类路径上不存在的时候,才会实例化一个Bean)

@ImportResource
导入原有的bean.xml配置文件。

@ImportResource("classpath:beans.xml")
public class config {

4.2 配置绑定:

用于在properties配置文件中设定了某些值的情况。

mypet.name = xw
  1. @Component + @ConfigurationProperties
    要先将组件加载进容器,只有在容器中的组件,才会拥有SpringBoot提供的强大功能。
    根据前缀查找配置
@Component
@ConfigurationProperties(prefix = "mypet")
public class pet {
public class controller {
    @Autowired
    com.wu.boot.pojo.pet pet;

    @RequestMapping("/pet")
    public pet pet(){
        return pet;
    }

结果:发现pet的name已成功设置为了xw。

  1. @EnableConfigurationProperties + @ConfigurationProperties
    @EnableConfigurationProperties必须写在配置类中(启动类)
@EnableConfigurationProperties(Car.class)
//1、开启Car配置绑定功能
//2、把这个Car这个组件自动注册到容器中
public class MyConfig {
}

5.简化开发:

5.1 Lombok

现在pom.xml中配置依赖,然后在setting的插件里下载lombok

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

用于实体类的四个注解,分别是:get/set方法,toString方法,无参构造方法,有参构造方法。

@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor

@Slf4j 用于在日志中添加日志:log.info(“请求来了”);

@Slf4j
@RestController
public class controller {
    @Autowired
    com.wu.boot.pojo.pet pet;

    @RequestMapping("/pet")
    public pet pet(){
        log.info("请求来了");
        return pet;
    }

5.2 devtools 热更新

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

ctrl + F9 进行更新

5.3 spring initailizr

spring的初始化向导
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值