栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot初学

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot初学

第一章 JavaConfig
  1. 为什么要使用springboot

因为spring,springmvc需要使用大量的配置文件(xml文件)

还需要配置各种对象,把使用的对象放到spring容器中才能使用对象

需要了解其他框架配置规则

  1. springboot就详单与不需要配置文件的spring+springmvc,常用的框架和三方库都已经配置好的,可以拿来就使用
  2. springboot开发效率搞,使用方便
1.1JavaConfig

JavaConfig:使用java类作为xml配置文件的替代,是配置spring容器的春java的方式,在这个java类可以创建java对象,把对象放入spring容器中(注入到容器)

使用两个注解:

  1. @Configuration:放在类的上面,表示这个类是最为配置文件使用的(xml)
  2. @Bean:声明对象,把对象注入到容器中
@Configuration
public class SpringConfig {
    
    @Bean
    public Student createStudent() {
        Student s1 = new Student();
        s1.setName("zhangsan");
        s1.setAge(22);
        s1.setSex("男");
        return s1;
    }
}

1.2@ImportResource

@ImportResource 导入其他的xml配置文件

@Configuration
@ImportResource(value = "classpath:applicationContext.xml")
public class SpringConfig {
    @Bean
    public Student createStudent() {
        Student s1 = new Student();
        s1.setName("zhangsan");
        s1.setAge(22);
        s1.setSex("男");
        return s1;
    }
1.3@PropertyResource

@PropertyResource:读取properties属性配置文件,使用属性配置文件可以实现外部化配置,在程序代码之外提供数据。

步骤:

  1. 在resource目录下,创建properties文件,使用的是k=v的格式提供数据
  2. 在PropertyPesource指定properties文件的位置
  3. 使用@Value(value=${key})
@Configuration
@ImportResource(value = "classpath:applicationContext.xml")
@PropertySource(value = "classpath:config.properties",encoding = "UTF-8")
@ComponentScan(basePackages = "com.ywr.vo")
public class SpringConfig {
}
第二章 SpringBoot 2.1介绍

springboot是spring中的一个成员,可以简化spring,springmvc的使用,他的核心还是IOC容器

特点:

  • 创建spring应用
  • 内嵌的tomcat,jetty,Undertow
  • 提供了starter起步依赖,简化应用的配置

​ 比如使用Mybatis框架,需要在spring项目中,配置Mybatis的对象SqlSessionFactory,Dao的代理对象在springboot项目中,在pom,xml里面加入一个mybaits-springboot-starter依赖

  • 尽可能去配置spring和第三方库(就是把spring中的第三方库中的对象都创建好,放到容器中,开发人员可以直接使用)
  • 提供了健康检查,统计,外部化配置
  • 不用去生成代码,不用使用xml,做配置

使用的地址是:http://start.spring.io

resource
  • static:静态资源(js.css.图片)
  • templates:模板文件
  • application.properties:springboot重要的配置文件
2.2注解的使用
@SpringBootApplication
符合注解:由
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan 组合
@SpringBootConfiguration:
@Configuration
public @interface SpringBootConfiguration {
    @AliasFor(
        annotation = Configuration.class
    )
    boolean proxyBeanMethods() default true;
}

说明:使用了@SpringBootConfiguration注解标签的类,可以作为配置文件使用的,可以使用Bean声明对象注入容器

@EnableAutoConfiguration

启动自动配置,把java对象配置好,注入到spring容器中,例如可以把mybatis的对象创建好,放到容器中

@ComponentScan

@ComponentScan 扫描器,找到注解,根据注解的功能创建对象,给属性赋值等等

默认扫描的包:@ComponentScan 所在的类所在的包和子包

2.3springboot配置文件

配置文件名称:application

扩展名有:properties(k=v);yml(k: v)

使用application.properties,application.yml

application.properties
#设置端口号
server.port=8082
#设置访问应用上下文路径 contextpath
server.servlet.context-path=/myboot
application.yml
server:
  port: 8083
  servlet:
    context-path: /mybootyml
2.4多环境配置

开发环境,测试环境,上线环境。

每个环境有不同的配置信息,列如端口,上下文件,数据库url,用户名,密码等等

使用多环境配置文件,可以方便切换不同的配置。

使用方式:创建多个配置文件,名称规则:application-环境名称.properties(yml)

创建开发环境的配置文件:application-dev.properties(application-dev.yml)

创建测试者使用的配置:application-test.properties(application-test.yml)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mH7qLEW8-1651245092038)(C:UsersywrdsgAppDataRoamingTyporatypora-user-imagesimage-20220429144816251.png)]

application.yml
#激活使用多个配置文件
#使用dev环境
#spring:
#  profiles:
#    active: dev

#使用test环境
spring:
  profiles:
    active: test
application-dev.yml
#开发环境的配置文件
server:
  port: 8081
  servlet:
    context-path: /mydev
application-online.yml
#项目上线使用的配置文件
server:
  port: 9002
  servlet:
    context-path: /myonline
application-test.yml
#测试使用的配置文件
server:
  port: 9001
  servlet:
    context-path: /mytest
*注意

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fntRmzLm-1651245092040)(C:UsersywrdsgAppDataRoamingTyporatypora-user-imagesimage-20220429151649187.png)]

这种表示端口号被占用了

2.5自定义配置 @Value
#配置端口号,context-path
server:
  port: 8082
  servlet:
    context-path: /myboot

#自定义key=value
school:
  name: 姚文睿
  website: www.ywrdsg.com
  address: 安徽安庆宜秀区

site: www.baidu.com
@Controller
public class HelloController {

    @Value("${server.port}")
    private Integer port;

    @Value("${server.servlet.context-path}")
    private String contextPath;

    @Value("${school.name}")
    private String name;

    @Value("${site}")
    private String site;

    @RequestMapping("/data")
    @ResponseBody
    public String queryData() {
        return name + ",site" + site + ", 项目的访问地址" + contextPath + ", 使用的端口号是" + port;
    }
}
关于@Component

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LlyIOa42-1651245092042)(C:UsersywrdsgAppDataRoamingTyporatypora-user-imagesimage-20220429152612813.png)]

@ConfigurationProperties

        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
#自定义key=value
school:
  name: 姚文睿
  website: www.ywrdsg.com
  address: 安徽安庆宜秀区
@ConfigurationProperties(prefix = "school")
@Component
public class SchoolInfo {
    private String name;
    private String website;
    private String address;

    public String getName() {
        return name;
    }

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

    public String getWebsite() {
        return website;
    }

    public void setWebsite(String website) {
        this.website = website;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "SchoolInfo{" +
                "name='" + name + ''' +
                ", website='" + website + ''' +
                ", address='" + address + ''' +
                '}';
    }
}
@Controller
public class HelloController {

    @Resource
    private SchoolInfo info;

    @RequestMapping("/info")
    @ResponseBody
    public String queryInfo() {
        return "SchoolInfo对象:" + info.toString();
    }
}

@ConfigurationProperties 的基本用法非常简单:我们为每个要捕获的外部属性提供一个带有字段的类。请注意以下几点:

  • 前缀定义了哪些外部属性将绑定到类的字段上
  • 根据 Spring Boot 宽松的绑定规则,类的属性名称必须与外部属性的名称匹配
  • 我们可以简单地用一个值初始化一个字段来定义一个默认值
  • 类本身可以是包私有的
  • 类的字段必须有公共 setter 方法
2.6使用Jsp

springboot不推荐使用jsp,而是使用模板技术代替jsp

使用jsp需要配置:

  • 加入一个处理jsp的依赖,负责编译jsp文件

    
        org.apache.tomcat.embed
        tomcat-embed-jasper
    
    
  • 如果需要使用servlet,jsp,jstl功能,需要加相应的依赖

    
        javax.servlet
        jstl
    
    
    
        javax.servlet
            javax.servlet-api
    
    
    
        javax.servlet.jsp
        javax.servlet.jsp-api
        2.3.3
    
    
  • 创建一个存放jsp的目录,一般叫做webapp

    index.jsp

  • 需要在pom.xml指定jsp文件编译后的存放目录

    META-INF/resource

  • 创建Controller,访问jsp

  • 在application.properties文件配置视图解析器

009-springboot-jsp

看这个项目

2.7使用容器

你想通过代码从容器中获取对象。

通过SpringApplication.run(Application.class, args);的返回值获取容器

public static ConfigurableApplicationContext run(Class primarySource, String... args){
        return run(new Class[]{primarySource}, args);
}

ConfigurableApplicationContext:接口,是ApplicationContext的子接口

public interface ConfigurableApplicationContext extends ApplicationContext
public static void main(String[] args) {

    //获取容器对象
    
    ApplicationContext ctx = SpringApplication.run(Application.class, args);

    //从容器中获取对象
    UserService userService = (UserService) ctx.getBean("userService");

    userService.sayHello("赵紫薇");
}
2.8CommandLineRunner 接口 和 ApplicationRunner 接口

这两个接口都有一个润方法,执行时间在容器对象创建好后,自动执行run()方法,可以完成自定义的在容器对象创建好的一些操作。

@FunctionalInterface
public interface CommandLineRunner {
    void run(String... args) throws Exception;
}
@FunctionalInterface
public interface ApplicationRunner {
    void run(ApplicationArguments args) throws Exception;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/845623.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号