SpringBoot--基础1(Springboot是什么,怎么配置,基础注解)

Spring

个人笔记,可供参考,本文也有很多细节缺少,

一、SpringBoot是什么?

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。
(官网)	Spring Boot使您可以轻松地创建独立的、生产级的、基于Spring的应用程序,您可以“只是运行”。
		我们对Spring平台和第三方库有一个独到的见解,这样您就可以从最少的麻烦开始了。大多数Spring引导应用程序只需要很少的Spring配置。

特征

  • Create stand-alone Spring applications
    创建独立的Spring应用程序
  • Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
    直接就嵌入了Tomcat,jetty或 Undertow (不需要部值 WAR文件)
  • Provide opinionated ‘starter’ dependencies to simplify your build configuration
    提供固定的“starter”依赖以简化构建配置 都是以starter的开头的名字的配置 starter.XXX.
  • Automatically configure Spring and 3rd party libraries whenever possible
    尽可能自动配置Spring和第三方库 能自动加载的都自动加载
  • Provide production-ready features such as metrics, health checks, and externalized configuration
    提供了生产的监控,就比如内存,运行状况和外部化配置
  • Absolutely no code generation and no requirement for XML configuratio
    完全没有代码生成 没有对xml文件的要求 配置spring的xml的配置可以全部不用 spring新版就不需要了

二、普通实例Hello world

  1. spring官网 点击 Super quick — try the Quickstart Guide. 超级快速入门
    在这里插入图片描述
  2. Spring Quickstart Guide 快速入门指南
  3. 点击 start.spring.io 开始快速创建在这里插入图片描述
  4. 选择自己的版本 选择相应的依赖 点GENERATE下载项目 然后直接用idea打开 在这里插入图片描述
  5. 在SpringbootDemoApplication编写
@GetMapping("/hello")
	public String hello(@RequestParam(value = "realName",defaultValue = "World")String name){
		return String.format("hello %s",name);//注意学习format
	}
}

在这里插入图片描述
6. 推荐运行方式右键运行
在这里插入图片描述
在这里插入图片描述

三、idea直接创建springboot

1.直接new project 选择 spring initializar 选择自己对应的版本
在这里插入图片描述
2.选择依赖关系 这是我个人需要的依赖 这些依赖已经够对mysql1的增删改查了
在这里插入图片描述
下一步
在这里插入图片描述

四、基础注解实例

详情请看

@SpringBootApplication(Spring Boot 应用程序)

有了它项目就可以运行起来,因为他相当于3个注解的功能	@Configuration、@EnableAutoConfiguration、@ComponentScan

在这里插入图片描述

@SpringBootConfiguration(Spring Boot 配置)

在这里插入图片描述

@Configuration

在这里插入图片描述

@EnableAutoConfiguration (启用自动配置)

让Spring Boot根据类路径中的jar包依赖(META-INF/spring.factories)为当前项目进行自动配置。(告诉Spring Boot根据类路径设置,其他bean和各种属性设置开始添加bean。)比如,添加了spring-boot-starter-web这个基础依赖,Spring Boot会自动添加tomcat和Spring MVC的依赖,并且自动对他们进行配置。

EnableAutoConfiguration 通过@Import 注入AutoConfigurationImportSelector.class

AutoConfigurationImportSelector.class 实现的接口————》DeferredImportSelector.class(延迟导入选择器)————》 

继承了ImportSelector.class (导入选择器)所以是ImportSelector的子类 可以重写selectImports方法(选择注入)--》 
 
selectImports()方法-》 调用了getAutoConfigurationEntry()方法 (获取自动配置条目)--》通过他调用了getCandidateConfigurations()(获取候选配置)  --SpringFactoriesLoader.loadFactoryNames()获取配置的名称地址翻到数组里面
--》 去 META-INF下面找spring.factories 文件 读取文件中的配置路劲

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
jar包的结构
在这里插入图片描述

@ComponentScan(组件扫描)

组件扫描,可自动发现和装配一些Bean 等同于

  <context:component-scan base-package="com.aaa.ssm.service"></context:component-scan>
  • 原码待扒

五、常用注解spring总结

@ResponseBody:表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@Responsebody后,会直接返回json数据

@Controller:用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解

@Service:一般用于修饰service层的组件

@Repository:使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。

@RequestMapping 提供路由信息,负责URL到Controller中的具体函数的映射。

@RestController:

用于标注控制层组件(如struts中的action,springmvc的controller),@ResponseBody和@Controller的合集。它继承自@Controller注解。spring4.0之前的版本,Spring MVC的组件都使用@Controller来标识当前类是一个控制器servlet。使用这个特性,我们可以开发REST服务的时候不需要使用@Controller而专门的@RestController。当你实现一个RESTful web services的时候,response将一直通过response body发送。为了简化开发,Spring 4.0提供了一个专门版本的controller。

@Bean 用@Bean标注方法等价于XML中配置的bean。

@Value 注入Spring boot application.properties配置的属性的值。

@AutoWired 自动导入依赖的bean。byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。

@Qualifier:当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者

@Resource(name=”name”,type=”type”):没有括号内内容的话,默认byName@Autowired干类似的事。

六、SpringApplication.run源码解析:

  • List item

七、springboot整合mybatis

1)添加依赖(最新spring-boot2.5.2+mybatis-spring-boot-starter 2.2.0)

根据自己对应的数据库添加pom 或者
选择依赖的时候mysql8版本可以按我的选择就可以了

2)添加 application.properties

#链接数据库四要素

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:/tab_account?serverTimezone=GMT%2B8&yesSSL=false
spring.datasource.username=root
spring.datasource.password=04161220

#端口号
server.port=18888
#工程名 可以不设置默认 /
#server.servlet.context-path=/bu
#mybatis实体别名配置
mybatis.type-aliases-package=com.aaa.springboot_mybatis_demo_20211213.entity
#mapper文件扫描
mybatis.mapper-locations=classpath:mapper/*.xml

#tomcat编码
server.tomcat.uri-encoding=UTF-8在这里插入图片描述
3),编写dao及mapper
4),编写service及实现类
5),编写controller
6),编写页面

7),@MapperScan(“com.aaa.sb.dao”)

在这里插入图片描述
提示包名不要用下划线

八、yaml简介and配置

yaml简介:

YAML是一个可读性高,用来表达数据序列化的格式。 YAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲。

数据结构可以用类似大纲的缩排方式呈现,结构通过缩进来表示,连续的项目通过减号“-”来表示,map结构里面的key/value对用冒号“:”来分隔。
server.port
spring.datasource.username
在这里插入图片描述

  1. 字串不一定要用双引号标识;
  2. 在缩排中空白字符的数目并不是非常重要,只要相同阶层的元素左侧对齐就可以了(不过不能使用TAB字符);
  3. 允许在文件中加入选择性的空行,以增加可读性;
  4. 在一个档案中,可同时包含多个文件,并用“——”分隔;
  5. 选择性的符号“…”可以用来表示档案结尾

yaml配置

#yml 和properties 同时存在时 yml 优先加载

# yml 和properties 同时存在时  yml 优先加载
#配置本项目的启动(访问)端口号
server:
  port: 18888
  servlet:
    context-path: /sbm
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/tab_account?serverTimezone=GMT%2B8&yesSSL=false
    username: root
    #如果密码全部是数字的必须加单引号
    password: '04161220'

mybatis:
  #实体类所做包
  type-aliases-package: com.aaa.springboot_mybatis_demo_20211213.entity
  #mapper.xml所在位置
  mapper-locations: classpath:mapper/*.xml

 

RequestBody 不支持的问题,解决:
1,pom.xml添加包

   <dependency>			
   <groupId>com.alibaba</groupId>			
   <artifactId>fastjson</artifactId>			
   <version>1.2.46</version>		
   </dependency>
   2,创建配置类config.HttpConverterConfig  复制下面内容:
@Configurationpublic class HttpConverterConfig {   
 @Bean    public HttpMessageConverters fastJsonHttpMessageConverters() {        
 // 1.定义一个converters转换消息的对象       
  FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();        
  // 2.添加fastjson的配置信息,比如: 是否需要格式化返回的json数据       
   FastJsonConfig fastJsonConfig = new FastJsonConfig();        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);        
   // 3.在converter中添加配置信息       
    fastConverter.setFastJsonConfig(fastJsonConfig);        
    // 4.将converter赋值给HttpMessageConverter       
     HttpMessageConverter<?> converter = fastConverter;        
     // 5.返回HttpMessageConverters对象       
      return new HttpMessageConverters(converter);  
        }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Network porter

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

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

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

打赏作者

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

抵扣说明:

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

余额充值