SpringBoot框架

1.什么是SpringBoot以及特点

SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性[IOC AOP DI],而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

 特点:

(1)可以创建独立的Spring应用程序,并且基于其MavenGradle插件,可以创建可执行的JARs和WARs;

(2)内嵌Tomcat或Jetty等Servlet容器;

(3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;

(4)尽可能自动配置Spring容器;

(5)提供准备好的特性,如指标、健康检查和外部化配置;

(6)绝对没有代码生成,不需要XML配置。

springboot:----为了简化spring工程的初始化搭建和开发过程。

 2.SpringBoot的快速入门

2.1创建一个新的项目

 注意:第一次在下载安装springboot时间比较慢,取决于电脑的网速,等待安装就行了。

 2.2在主类所在的包下创建controller包,并在该包下创建一个HelloController类文件

package com.hmq.springboot.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController //标记该类为controller并且该类中所有方法的返回值为json格式
public class HelloController {
    @GetMapping("hello")
    public Map<String,Object> hello(){
        Map<String,Object> map = new HashMap<>();
        map.put("name","霍大帅");
        map.put("age",18);
        map.put("sex","男");
        return map;
    }
}

2.3在主函数Application.java中测试

package com.hmq.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

 2.4浏览器访问相应路径,HelloController下的路径

controller  service包必须在主类所在包以及子包下 

 3.了解pom.xml以及配置文件

3.1pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--parent:继承 该父工程包含jar包的版本号管理-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.12</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hmq</groupId>
    <artifactId>SpringBoot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>SpringBoot</name>
    <description>SpringBoot</description>
    <!--properties:定义版本号,同一版本-->
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <!--web启动依赖:该依赖jar中包含了springweb所需的所有依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

3.2 application.properties

#Tomcat端口号[自定义的端口号,默认8080,6666的端口号不能使用]
server.port=8081
#设置工程的上下文路径[浏览器搜素HelloController的路径]
server.servlet.context-path=/hmq

3.3SpringBoot的配置文件种类

properties:属性文件类型:格式 key=value 格式

#Tomcat端口号[自定义的端口号,默认8080,6666的端口号不能使用]
server.port=8081
#设置工程的上下文路径[浏览器搜素HelloController的路径]
server.servlet.context-path=/hmq

yml:文件类型: 格式:key:

                                        key:value

server:
  port: 8081
  servlet:
    context-path: /hmq

 如果yml和properties都存在相同的配置,则以properties为主,如果两个配置文件的内部不同,则合并。不论那种格式,名字必须为 application

 4.java读取springboot配置文件的内容

比如:OSS文件上传。 需要: bucketName  密钥  id. 当时你们写死到类中。改为客户的。修改java源码。---交付的war文件。通过java代码读取配置文件里面的内容

读取配置文件内容的方式:

第一种: @Value读取

properties:
student.name=zhangsan
student.age=18
student.loc=zhengzhou

@Value("${student.name}") //读取springboot配置文件中student.name对应的内容
private String name;
@Value("${student.age}")
private Integer age;
@Value("${student.loc}")
private String loc;

@GetMapping("index")
public String index(){
    return "姓名:"+name+";年龄:"+age+";地址:"+loc;
}

第二种: @ConfigurationProperties(prefix="前缀") ---类

 

student.name=zhangsan
student.age=18
student.loc=zhengzhou
#游泳
student.hobby[0]=swing
#吃饭
student.hobby[1]=eating
#睡觉
student.hobby[2]=sleeping
student.map.k1=a1
student.map.k2=a2
student.map.k3=a3

package com.hmq.springboot.vo;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@ConfigurationProperties(prefix = "student")  //配置文件以student开头
@Data
@Component  //有spring容器帮助创建该类的对象,并把读取到配置文件中以student开头的内容配置给相应的属性
public class Student {
    private String name;
    private Integer age;
    private String loc;//属性名要和配置文件中的名称相同
    private List<String> hobby;
    private Map<String, Object> map;
}

 注意:第一种方式只能读取(基本类型和字符串类型) 第二种方式可以读取任意类型

 在yml的格式:

server:
  servlet:
    context-path: /bbb

student:
  name: lisi
  age: 28

  address: zhengzhou
  hobby: # yml结构中数组类使用-表示一个元素 
    - swing
    - eating
    - sleeping
  map:
    k1: v1
    k2: v2
    k3: v3

在线yaml转properties-在线properties转yaml-ToYaml.com

 5.springboot多环境开发配置

环境: (1)开发环境  (2)测试环境    (3)生产环境【线上环境】

由于环境的不同,可能它们的配置也会不同

1)application-dev.properties

#针对关于开发的配置内容
server.port=8001

2) application-test.properties

#针对关于测试环境的配置内容
server.port=8002

3)application-online.properties

#针对关于线上环境的配置内容---
server.port=8003

4)application.properties

# 不同环境公共配置可以写在application
student.name=zhangsan
student.age=18
student.address=beijing
student.hobby[0]=swing
student.hobby[1]=eating
student.hobby[2]=sleeping
student.map.k1=v1
student.map.k2=v2
student.map.k3=v3
#激活相应的环境配置---每个环境的文件配置名必须:application-xxx.properties
spring.profiles.active=dev

6.springboot注册web三大组件 

web中的三大组件.  servlet   filter过滤器  Listener监听器

由于springboot没有web.xml文件了,有时我们需要把第三方的servlet注册到springboot中。讲解shiro安全框架

 6.1 注册servlet到springboot内置tomcat中

6.1.1创建一个servlet类

public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("**************************************");
    }
}

6.1.2创建一个配置类

package com.hmq.springboot.config;

import com.hmq.springboot.servlet.MyServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.http.HttpServlet;

@Configuration //等价于xml配置文件
public class MyConfig {

    @Bean  //等价于xml配置文件<bean/>   ServletRegistrationBean该类用于注册servlet到tomcat容器中
    public ServletRegistrationBean<HttpServlet> registrationBean(){
        ServletRegistrationBean<HttpServlet> registrationBean=new ServletRegistrationBean<>();
        registrationBean.setName("my");
        registrationBean.setServlet(new MyServlet());
        registrationBean.addUrlMappings("/my");
        return registrationBean;
    }

}

6.1.3测试

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值