为什么会有springboot----->因为在spring、springmvc中需要写大量的配置文件,还需要配置各种对象,把使用的对象放入到spring容器中才能使用对象,还需要了解其他框架配置规则。
Spring家族推出springboot框架就是为了简化spring的配置与开发,使得在基于Spring框架的开发中开发起来更快速更方便,简化或减少相关的配置,提高开发效率;
SpringBoot 就相当于 不需要配置文件的Spring+SpringMVC------>常用的框架和第三方库都已经配置好了。 //开发效率高
JavaConfig:
spring框架提供的一个功能,使用java类作为xml配置文件的替代,是配置spring容器的纯java的方式。
在这个java类(配置文件类)这可以创建java对象,把对象放入spring容器中(注入到容器)
Spring使用Xml作为容器配置文件------------》在3.0以后加入了JavaConfig(java类配置容器)配置Spring IOC容器的纯Java方法。使用:创建普通类,定义方法,方法返回值是对象
@Configuration注解: 位置:类上 作用:表示这个类是作为配置文件使用的。 //相当于spring配置文件xml
属性:@Bean注解: 位置:方法上 作用:声明对象,把方法的返回值(对象)注入到容器中。 //相当于<bean>标签
属性:name 指定对象的名称(说明:若不指定对象的名称,默认方法名是id) //相当于<bean>标签的id属性
注解的位置对应之前spring中配置文件中的标签
@ImportResource注解: 位置:类上 作用:导入已有的xml配置文件 //相当于xml文件的<import resources="其他配置文件"/>
属性:value String数组,指定配置文件的位置(一般为calsspath:xxx类路径下)@ComponentScan注解 位置:类上 作用:告诉配置文件类,去哪里找其他注解 //相当于组件扫描器标签<context:component-scan base-package="注解所在的包名"/>
属性:basePackages 读取注其他注解所在的包名
@PropertyResource注解: 位置:类上 作用:把让spring框架的配置文件类读到属性配置文件(properties)
属性:value String数组,指定.properties属性文件的位置(一般为calsspath:xxx类路径下)
//相当于<context:property-placeholder location="classpath:conf/jdbc.properties"/>使用:
- 在resources目录下创建xxx.properties文件,使用k=v格式提供数据
- 根据xxx.properties文件创建一个Java普通类用来获取数据,私有属性为k
- 在类上使用@Component("id")使用注解生成对象放入容器
- 在属性上使用@Value(value="${key}")
- 在JavaConfig的Java类上@PropertyResource(value="classpath:xxx属性文件") 把让spring框架的配置文件类读到属性文件
- 在JavaConfig的Java类上@ComponentScan(basePackages = "类所在包名") //组件扫描器找到注解生成对象
使用JavaConfig:在JavaConfig创建容器对象:ApplicationContext ctx = new AnnotationConfigApplicationContext(配置文件类.class);
获取对象:Student student = (Student) ctx.getBean("id名"); //注意要转换类型,因为都是Object
SpringBoot
SpringBoot是Spring中的一个成员,可以简化spring、springmvc的使用。核心还是IoC容器
特点:创建spring应用
内嵌的tomcat, jetty , Undertow 服务器
提供了starter起步依赖,简化应用的配置。 //比如使用MyBatis框架 , 需要在Spring项目中,配置MyBatis的对象 SqlSessionFactory , Dao的代理对象
//现在在SpringBoot项目中,在pom.xml里面, 加入一个 mybatis-spring-boot-starter依赖,上面的就配置好了
自动配置:尽可能去配置spring和第三方库。(就是把spring中的、第三方库中的对象都创建好,放到容器中, 开发人员可以直接使用)
提供了健康检查, 统计,外部化配置(属性配置文件就是外部化配置)
不用生成代码, 不用使用xml,做配置
创建springboot项目
第一种方式:使用Spring提供的初始化器, 就是向导创建SpringBoot应用 //使用地址:https://start.spring.io/ //需要联网
.mvn 与maven有关的 //可以删除
mvnw 与maven有关的 //可以删除
mvnw.cmd 与maven有关的 //可以删除
HELP.md 描述文件 //可以删除
.gitignore git忽略文件 //不用管
xxx.iml IDEA自己的文件 //不用管
重点:
pom.xml
src
pom.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> springboot项目的父项目 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> 当前项目的坐标 <groupId>groupId</groupId> <artifactId>artifactId</artifactId> <version>0.0.1-SNAPSHOT</version> <name>artifactId</name> 可以删除不要 <description>artifactId</description> 可以删除不要 jdk版本 <properties> <java.version>1.8</java.version> </properties> 依赖 <dependencies> web依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> web项目的起步依赖,会加入相关需要的的jar包 </dependency> 测试依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> maven插件 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
调试项目:
第二种方式:使用Spring提供的初始化器, 就是向导创建SpringBoot应用 //使用地址:https://start.springboot.io/(上面的地址是国外的,经常访问失败,所以用国内的)
第三种方式:使用浏览器进入上面的网址,在生成项目,下载压缩包,解压后导入idea---maven工程就可以
第四种方式:maven----不用选模板----创建普通的maven项目-----在pom.xml加入父项目和起步依赖
在resources文件夹种新建:2个文件夹:static、templates 1个文件application.properties
@SpringBootApplication public class Application { //主启动类 public static void main(String[] args) { //主方法 SpringApplication.run(Application.class,args); //启动spring IoC容器,返回容器 } }
@SpringBootApplication注解: 位置:主类上
复合注解:由@SpringBootConfiguration (配置文件) 三个注解组成
@EnableAutoConfiguration (自动配置功能)
@ComponentScan (扫描注解)
@SpringBootConfiguration注解: //该注解的注解:@Configuration注解 //该类可以当作配置文件来用,可以使用Bean(标签、注解)声明对象,注入到容器
@Configuration public @interface SpringBootConfiguration { @AliasFor( annotation = Configuration.class ) boolean proxyBeanMethods() default true; }
@EnableAutoConfiguration: 启用自动配置, 把java对象配置好,注入到spring容器中 //例如可以把mybatis的对象创建好,放入到容器中
@ComponentScan:组件扫描器,找到注解,根据注解的功能创建对象,给属性赋值等等。
默认扫描的包: @ComponentScan所在的类所在的包和子包。
Spring Boot配置文件:.properties格式文件(k=v)、.yml格式文件(k: v)
核心配置文件:名字必须以 application 开始 //如:application.properties、application.yml 若2个都配置则冲突,优先用.properties
application.properties格式文件:#设置端口号 server.port=8080 #应用的上下文路径contextpath 项目 server.servlet.context-path=/xxx
application.yml格式文件: //有层级关系:一般习惯2个空格 k:与v有一个空格 //推荐使用
server: port: 8080 servlet: context-path: /xxx
多环境配置