SpringBoot面试的一些问题

# SpringBoot

 基于Spring框架集成一套快速开发工具

完全脱离配置文件  xml

SSM 项目时 需要做的步骤有哪些?

maven 构建项目  

1.添加依赖

2.编写配置文件  (编写内容非常 容易出错) Spring容器 和mvc组件时需要自己手动配置

3.配置运行

并且在Springboot 集成了各种常用的中间件组件  使用时如果不需要额外配置的话可以直接使用 

redis  spring-redis  [redis连接信息  连接池  序列化反序列化机制 ] 127.0.0.1 6379 

Springboot可以直接使用redis的默认配置信息 

配置连接信息  配置 的方式更简单

   Spring Boot 是由 Pivotal 团队提供用来简化 Spring 的搭建和开发过程的全新框架。随着近些年来微服务技术的流行,Spring Boot 也成了时下炙手可热的热点技术。

​    Spring Boot 去除了大量的 xml 配置文件,简化了复杂的依赖管理,配合各种 starter 使用,基本上可以做到自动化配置。Spring 可以做的事情,现在用 Spring boot 都可以做。

## Spring Boot核心功能

简化Spring开发 

## 环境要求

2.1.8 web

ssm web容器时 使用的tomcat7 并且需要手动添加tomcat插件 以web war方式启动项目

jar 包方式就能启动   main方法

Spring Boot支持以下嵌入式servlet容器:

| **名称**     | Servlet版本 |
| ------------ | ----------- |
| Tomcat 9.0   | 4.0         |
| Jetty 9.4    | 3.1         |
| Undertow 2.0 | 4.0         |

###  SpringBoot自启动的配置

```
<transformer implementation="org.springframework.boot.maven.PropertiesMergingResourceTransformer">
  <resource>META-INF/spring.factories</resource>
</transformer>
```

 在SpringBoot的启动类中,@SpringBootApplication注解的代码里面有一句`@EnableAutoConfiguration`

  `@EnableAutoConfiguration`注解加载的是资源目录META-INF文件下的spring.factories的文件。包括导入到项目中的Jar包的META-INF文件夹下的spring.factories文件。spring.factories文件是一个properties文件。

 `@ComponentScan`作用是扫描@SpringBootApplication所在的Application类(即spring-boot项目的入口类)所在的包(basepackage)下所有的@component注解(或拓展了@component的注解)标记的bean,并注册到spring容器中

参考查看:https://accright.com/article/101

Springboot有自己的默认配置规则,当开发者需要进行修改配置时在resources下添加配置文件,并且配置文件需要注意命名:

1.application.[properties|yml] 项目的配置文件 默认使用 application-prod.yml

2.bootstrap.[properties|yml] 引导文件 

# 创建springboot项目

#### SpringBoot 基础Pom配置文件依赖:

Spring官网 下载 配置的boot项目 

通过IDE方式  以向导方式创建

手动创建Boot项目

```xml
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</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>


        <dependency><!--页面模板依赖-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

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

        <!-- 日志 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

    </dependencies>
```

### starter

​    springboot提供了不同的starter,每个starter就是组合了不同的依赖,当需要使用一些其他组件时如果springboot提供了starter开发者就可以直接使用相应的starter不需要自己导入相应的依赖

添加完成后boot项目中需要的依赖会自动下载:

![](assets/1607607469205.png)

### 运行:

创建包结构 如:com.oracle

启动当前的boot项目时就在包下创建一个类编写main方法

```java
@SpringBootApplication

public class RunApplication {

  public static void  main(String[] strParams) {

    SpringApplication.run(RunApplication.class, strParams);

   }

}
```

@SpringBootApplication核心启动类注解(组合注解)

```java
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
        @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication 
```

## SpringBoot中常用注解

   1.**@Configuration**注解类表明其主要目的是作为bean定义的源,@Configuration类允许通过调用同一类中的其他 @Bean方法来定义bean之间的依赖关系 spring.xml  ->bean   编写一个普通java类    返回注册类型的方法 类型方法上@bean  

GoodsServiceConfig  ->

@Bean

  public GoodsService goodsService(){  retrun new GoodsSerivce}

spring.xml   <bean id="goodsService" class="com.oracle.service.GoodsService"></bean>

   2.**@Bean** Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。 产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中

3. **@SpringBootApplication** 包含@Configuration、@EnableAutoConfiguration、@ComponentScan  

4. **@ComponentScan**  组件扫描。相当于,如果扫描到有@Component @Controller @Service等这些注解的类,则把这些类注册为bean 

5. **@EnableAutoConfiguration**让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,一般加在主类上  

6. **@ConfigurationProperties**Spring Boot将尝试校验外部的配置 加载配置文件中自定义配置信息 用户定义的自定义信息可以包含前缀 在类中进行注入

   通过这个注解可以将自定义的配置信息注入到属性中  可以配置 配置前缀

   application.yml

   k-v  
   
   yml 格式缩进  yml中配置文件的格式有严格要求  key: 值
   
     
   
   ### 配置文件使用
   
   Springboot中提供2种配置文件方式
   
   1. application.properties
   
   ```properties
   server.port=8081
   ```

   

    

   2. application.yml  一定要注意格式空格和缩进
   
   #### JDK8新增的时间
   

更多使用:https://www.cnblogs.com/huanshilang/p/12013386.html

   ```java
   //构造时间
LocalDateTime now = LocalDateTime.of(2021,1,1,12,00,00);
   //时间相加
   now=now.plusMinutes(2);
   System.out.println(now);
   System.out.println("计算两个时间的差:");
   LocalDateTime end = LocalDateTime.now();
   Duration duration = Duration.between(now,end);
   long days = duration.toDays(); //相差的天数
   long hours = duration.toHours();//相差的小时数
   long minutes = duration.toMinutes();//相差的分钟数
   long millis = duration.toMillis();//相差毫秒数
   long nanos = duration.toNanos();//相差的纳秒数
   ```
```
   
在使用时后台接收前台参数时需要去设置@JsonFormat注解指定格式化日期格式,并且还需要加入时区
   
示例实体属性:
   
   ```java
   @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
   private LocalDateTime lockexpiredate;
```

   ```yml
   ?serverTimezone=Asia/Shanghai #数据库驱动后加入时区指定 MySQL驱动更新为5.8 引入cj
   ```

   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值