springboot 初级入门(第一章)

Springboot 2.5

因 springboot 在2.4 以后将 .RELEASE 后缀就移除了,所以后续都是用2.5.0版本

2.3.x.RELEASE 2.4.x 数字命令

     Spring Boot是由`Pivotal团队提供的全新框架`,其设计目的是用来`简化Spring应用的 初始搭建以及开发过程`。该框架使用了`特定的方式来进行配置`,从而使开发人员不 再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应 用开发领域(rapid application development)成为领导者。
Spring Boot 全新框架  作用: 简化spring应用初始搭建和开发过程
如何简化:  开发人员使用springboot只要基于特定方式进行配置  简化spring使用
SpringBoot 微框架:   5分钟 完成之前ssm中环境
springboot(微框架) = springmvc(控制器) + spring core(项目管理)

springboot 优势

  1. 创建完整的独立的Spring应用程序 spring springmvc 只有一个容器`
  2. 嵌入的Tomcat,无需部署WAR文件` springboot 内嵌tomcat 应用跑在内嵌服务器上;
  3. 简化Maven配置,自动配置Spring Springmvc,没有XML配置 几个依赖
    • 用来springboot spring应用在无xml

springboot 默认约定

在这里插入图片描述

  • springboot 项目中必须在src/main/resources 中放入 application.yml(.properties)核心配置文件 名字必须为:application
  • springboot 项目中必须在src/main/java中所有子包之外构建全局入口类型,xxApplication,入口类一个springboot项目只能有一个

环境搭建

环境要求

1. system Requirements

​ jdk 1.8 +

​ maven 3.2 +

​ spring framework 5.x +

2. servletcontainers

​ tomcat 9.0 +

3. 开发工具

​ idea 2018 +

所需jar包依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.0</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
        <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>

配置文件

项目中 src/main/resources/application.yml

在这里插入图片描述

编写启动入口类

@SpringBootApplication
public class SpringbootDay1Application {

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

}

修改内嵌服务器端口以及访问路径

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

相关注解

# 入口类 SpringApplication
- SpringBootApplication: 全局入口类 有且只能有一个
- mian 函数参数可以在启动时指定jvm参数覆盖默认配置

# @SpringBootApplication 注解等价于: 
- @SpringBootConfiguration           标识这是一个springboot的配置类,默认自定配置Spring环境
- @EnableAutoConfiguration 					 自动与项目中集成的第三方技术进行集成
- @ComponentScan			 							 扫描入口类所在子包以及子包后代包中注解	

配置文件

配置文件可以区分两种;

  • 一种是在一个 yml里面区分多个环境,所有的配置都写到一起,最终使用一个默认的配置指定是哪个环节;

  • 再一种就是分为多个配置文件 ,不同配置写到不同的文件中

合并起来yml

spring:
  profiles:
    active: dev # 默认激活开发环境配置
 
# 默认配置
server:
  port: 8080
 
# 开发环境配置
---
spring:
  profiles: dev
server:
  port: 8081
 
# 生产环境配置
---
spring:
  profiles: prod
server:
  port: 80

分开编写

以 application开头-xx.yml

  • application-dev.yml
  • application-prd.yml
  • application.yml 这个文件不可缺,然后再该文件指定激活哪个配置,使用 spring.profiles.active = dev springboot 会自动将前缀 application-和 .yml后缀拼接起来
  1. 有时候我们想在启动的时候才指定怎么办

在这里插入图片描述

  • –spring.profiles.active=prd
  • jar 启动方式 java -jar spring.jar --spring.profiles.active=prd 即可
  1. 当然还有一种方式利用maven功能

    在配置文件build中定义一个参数,然后打包的时候,激活的地方填写 @build的参数@即可
    

工厂创建对象

我们一般直接创建单个对象或者多个bean对象,单个对象利用 @Service 或者 @Component 等,多个的话使用 @Bean方式

创建单个对象

在springboot中可以管理单个对象可以直接使用spring框架中注解形式创建。

  • @Component 创建对象
    • @Controller 用来创建控制器对象,对应的请求url方法
    • @Service 用来创建业务层对象
    • @Repository 用来创建dao对象,一般用的少,我们都是使用mybatis 生成对应的代理类
      • 以上注解都有value属性,value属性用来指定工厂中对象名称
@Service
public class DemoServiceImpl implements UserService{
  //doing....
}

创建多个对象

如何在springboot中像spring框架一样通过xml创建多个对象,在SpringBoot中也提供了相同注解如**@Configuration + @Bean**注解进行创建

  • @Configuration 代表这是一个spring的配置类相当于Spring.xml配置文件
  • @Bean 用来在工厂中创建这个 @Bean 注解标识的对象
    • 默认使用@Bean创建对象在工厂中唯一标识为方法名称
    • 修改在工厂中对象标识可以在使用**@Bean(“工厂中名字”)指定一个名字**
@Configuration
public class Beans {
    @Bean
    public Calendar calendar(){
        return Calendar.getInstance();
    }
}
# 注意: 
			1.@Configuration 用来在工厂中一次性创建多个对象
			2.@Component     用来创建单个对象

属性注入

  • @Value 属性注入
  • @ConfigurationProperties 对象注入

基本属性注入 @Value

name: 小王
age: 33
price: 10.11
sex: true
birthday: 2021/12/12

arrs: 123,234,456
lists: xiaowang,xiaoli,zhangsan,lisi



maps2: "{'aa':'123','bb':'456'}"
 // 基本类型+ string 类型 + 日期
    @Value("${name}")
    private String name;

    @Value("${age}")
    private Integer age;

    @Value("${sex}")
    private Boolean sex;

    @Value("${price}")
    private Double price;

    @Value("${birthday}")
    private Date birthday;

    // 数组
    @Value("${arrs}")
    private String[] arrs;

    // list数据
    @Value("${lists}")
    private List<String> lists;


    // map json 格式
    @Value("#{${maps2}}")
    private Map<String,String> maps2;

    @RequestMapping("/valueInjection")
    public String valueInjection() {
        System.out.println("name="+name);
        System.out.println("age="+age);
        System.out.println("sex="+sex);
        System.out.println("price="+price);
        System.out.println("birthday="+birthday);
        System.out.println("arrs="+arrs);
        System.out.println("lists="+lists);
        System.out.println("maps2="+maps2);
        return "读取成功!";
    }

在这里插入图片描述

对象注入

注意: 这种方式必须提供SET方法

如果直接使用会提示这个 ,这个时候我们需要导入一个依赖,就会消失,并且在yml 中编写也有提示了;
在这里插入图片描述

1. 引入依赖注入元数据

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

**2. 编写配置文件 **

user:
  name: 隔壁老王
  age: 45
  birthday: 1975/11/11
  bobbys:
    - 足球
    - java
    - python
  address:
    company: 上海市 浦东新区
    family: 湖北省 武汉市 xx 区

**3. 实体类编写,记得一定要有set方法 **

@ConfigurationProperties(prefix = “user”) prefix = “前缀” 跟配置文件前缀对应

@Component
@ConfigurationProperties(prefix = "user")
public class UserPropertiesBean {

    private String name;

    private Integer age;

    private Date birthday;

    private Set<String> bobbys;

    private Map<String,String> address;

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Set<String> getBobbys() {
        return bobbys;
    }

    public void setBobbys(Set<String> bobbys) {
        this.bobbys = bobbys;
    }

    public Map<String, String> getAddress() {
        return address;
    }

    public void setAddress(Map<String, String> address) {
        this.address = address;
    }
}

**4. 测试controller **

@Autowired
    private UserPropertiesBean userPropertiesBean;


    /**
     *  属性注入
     * @return
     */
    @RequestMapping("/propertiesInjection")
    public UserPropertiesBean propertiesInjection() {
        return userPropertiesBean;
    }

–效果–
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

星空寻流年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值