Springboot使用杂谈

38 篇文章 0 订阅
7 篇文章 0 订阅

1、springboot配置

1.0 maven配置最好增加对jdk版本的确认

<profiles>
    <profile>
    	<id>jdk-1.8</id>
        <activation>
    		<activeByDefault>true</activeByDefault>
            <jdk>1.8</jdk>
    	</activation>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>	
            <maven.compiler.target>1.8</maven.compiler.target>
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerversion>
        </properties>
    </profile>
</profiles>

1.1、pom引入springboot 文件配置:

<groupId>org.example</groupId>
<artifactId>www-ES-Api</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<!-- 依赖管理 -->
<parent>
    <artifactId>spring-boot-starter-parent</artifactId>
    <groupId>org.springframework.boot</groupId>
    <version>2.3.5.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
<!-- 几乎声明了所有开发中常用的依赖的版本号,自动版本仲裁机制. -->
<!--org.springframework.boot的父项目包-->
<parent>
    <groupId>org.springframework. boot</ groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.3.4.RELEASE</version>
</parent>

starter场景启动器

<!-- 
1、见到很多spring-boot-starter-* :*就某种场景
2、只要引入starter,这个场景的所有常规需要的依赖我们都自动引入
3、SpringBoot所有支持的场景
https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot 
4、见到的 *-spring-boot-starter:第三方为我们提供的简化开发的场景启动器。

版本控制:
1、引入依赖默认都可以不写版本
2、引入非版本仲裁的jar,要写版本别

2、springboot以外的其他依赖版本的配置

    <properties>
        <!--版本设置-->
        <mysql.version>5.1.30</mysql.version>
    </properties>

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

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
	</dependencies>

2.1自动配置

  • 自动配好Tomcat

  • 引入Tomcat依赖。

  • 配置Tomcat

    <dependency>
        <groupId>org.springframework.boot</ groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <version>2.3.4.RELEASE</version>
        <scope>compile</scope>
    </dependency>
    
  • 自动配好SpringMVC

​ - 引入SpringMVC全套组件

​ - 自动配好SpringMVC常用组件(功能)

  • 自动配好Web常见功能,如:字符编码问题

    • SpringBoot帮我们配置好了所有web开发的常见场景
  • 默认的包结构

    1. 主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来。

    2. 无需以前的包扫描配置

    3. 想要改变扫描路径,@SpringBootApplication(scanBasePackages=“com.atguigu”)或者

      @ComponentScan指定扫描路径

        @SpringBootApplication  等同于
        @SpringBootConfiguration
        @EnableAutoConfiguration
        @ComponentScan("com.atguigu.boot"")
      
  • 各种配置拥有默认值

    1. 默认配置最终都是映射到MultipartProperties
    2. 配置文件的值最终会绑定每个类上,这个类会在容器中创建对象
  • 按需加载所有自动配置项

    • 非常多的starter
    • 引入了哪些场景这个场景的自动配置才会开启
    • SpringBoot所有的自动配置功能都在spring-boot-autoconfigure包里面
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-batch</artifactId>
  </dependency>
</dependencies>

3、使用

  • 主程序入口

    package com.toec.boot;
    
    import com.toec.boot.bean.Pet;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.ConfigurableApplicationContext;
    
    /**
     * @Package: com.toec.boot
     * @ClassName: MainApplication
     * @Description:  springboot初始化,主类设置
     * @Date: 1/9/2022 3:19 PM
     * @Version: 1.0
     */
    @SpringBootApplication(scanBasePackages="com.toec")
    public class MainApplication {
        public static void main(String[] args) {
            // 1、返回我们IoC容器
            ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
            //2、查看容器里面的组件
            String[] beanDefinitionNames = run.getBeanDefinitionNames();
            for (String name:beanDefinitionNames){
                System.out.println(name);
            }
            // 3、从容器中获取组件
            Pet tom = run.getBean("tom",Pet.class);
            Pet tom1 = run.getBean("tom",Pet.class);
            // Pet tom2 = run.getBean("tom",Pet.class);
            System.out.println("组件:"+(tom==tom1));
        }
    }
    
  • 控制层接口

    package com.toec.boot.controller;
    
    import com.toec.boot.vo.DeviceVo;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.*;
    
    /**
     * @Package: com.toec.boot.controller
     * @ClassName: HelloController
     * @Description: 请求接口
     * @Date: 1/9/2022 3:23 PM
     * @Version: 1.0
     */
    //@ResponseBody
    //@Controller
    @RestController
    public class HelloController {
        @RequestMapping("/hello")
        public String Handler(){
            return "Hello,Spring boot";
        }
    
        @GetMapping("getHello")
        public String HandlerGet(){
            return "Hello,Spring boot,get";
        }
    
        @PostMapping("/postHello")
        public String HandlerPost(DeviceVo deviceVo){
            String msg = deviceVo.getDeviceId();
            System.out.println(msg);
            return "hello,Spring boot , post,"+msg;
        }
    }
    
    
  • bean实体

    package com.toec.boot.bean;
    
    /**
     * @Package: com.toec.boot.bean
     * @ClassName: Pet
     * @Description: 宠物
     * @Date: 1/9/2022 10:04 PM
     * @Version: 1.0
     */
    public class Pet {
        private String name;
    
        public Pet() {
        }
    
        public Pet(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "Pet{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }
    
    package com.toec.boot.bean;
    
    /**
     * @Package: com.toec.boot.bean
     * @ClassName: User
     * @Description: 用户
     * @Date: 1/9/2022 10:05 PM
     * @Version: 1.0
     */
    public class User {
        private String name;
        private int age;
    
        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    
  • bean配置

    1. @Configuration 基本使用

    2. 配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的

    3. 配置类本身也是组件

    4. @Import({User.class, DBHelper.class}) //可以导入全类名组件,默认组件的名字就是全类名

    5. proxyBeanMethods:代理bean的方法

      • Full(proxyBeanMethods = true)、【保证每个@Bean方法被调用多少次返回的组件都是单实例的】
      • Lite(proxyBeanMethods = false)【每个@Bean方法被调用多少次返回的组件都是新创建的】
      • 组件依赖必须使用Full模式默认。其他默认是否Lite模式
    package com.toec.boot.config;
    
    import com.toec.boot.bean.Pet;
    import com.toec.boot.bean.User;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * @Package: com.toec.boot.config
     * @ClassName: Config
     * @Description: bean配置
     * @Date: 1/9/2022 10:07 PM
     * @Version: 1.0
     * 1、配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的
     * 2、配置类本身也是组件
     * 3、Configuration中属性proxyBeanMethods :代理bean的方法
     * 若配置为true,外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器中的单实例对象
     * //如果@Configuration(proxyBeanMethods = true )代理对象调用方法。
     * SpringBoot总会检查这个组件是否在注册容器中的单实例对象
     * 保持组件单实例
     */
    @Import({User.class, DBHelper.class}) //可以导入全类名组件,可以不用
    @Configuration(proxyBeanMethods = false)  //告诉SpringBoot这是一个配置类==配置文件
    public class MyConfig {
        @Bean
        public User user(){
            return new User("toec",20);
        }
        @Bean("tom")
        public Pet pet(){
            return new Pet("dog");
        }
    }
    
  • 配置文件

    server.port=8088
    spring.servlet.multipart.max-file-size=10000MB
    spring.datasource.url = jdbc:mysql://localhost:3306/test?setUnicode=true&characterEncoding=utf8
    spring.datasource.username=root
    spring.datasource.password=1234
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脑袋不够用的小渣渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值