1.为什么要用SpringBoot?
答:传统的Spring、SpringMVC需要用大量的xml配置文件,而且还需要配置各中对象,把使用的对象放到Spring容器中才能使用对象,
并且需要了解其他的框架的配置规则。SpringBoot很好的解决了这个问题。
而SpringBoot就相当于不需要配置文件的Spring-SpringMVC,并且常用的框架和第三方库都已经配置好了
总结:就是方便QAQ
2.配置文件作用是什么?
答:在创建spring容器的时候会读取相应的xml配置文件。
也就是说:在容器初始化的时候对会对配置文件或者JavaConfig类进行读取,将配置文件中的类的对象实例创建出来
形象的说就是:配置文件就相当于图纸和原材料,工厂通过这些图纸和原材料建造物品。
2.JavaConfig是什么?
答:JavaConfig是代替xml配置文件的一种纯java类的方式。在这个Java类中创建的对象会放入spring容器中。
简单来说:在容器创建的时候(如果你提供了这个JavaConfig类)会读取JavaConfig类,根据这个类中的具体内容
将JavaConfig配置类中的对象实例给创建出来保存到spring容器中
普通的Java类要想作为配置类,就需要两个注解去标识这个类是作为配置类来使用的。
第一个是:@Configuration 这个注解是说明这个类是作为配置文件来使用的
@Configuration
第二个是:@Bean 表示读取到带有这个注解的时候要将返回值放入到容器之中,一般放在方法上面,等价于
@Bean(value="对象实例名")
3.@importResource是什么?
@importResource就是注解版的
@importResource(value="文件位置/文件名.xml")或者@importResource(value={"位置1","位置2"},{"位置n"}) @importResource(location="文件位置/文件名.xml")或者@importResource(location={"位置1","位置2"},{"位置n"})
作用就是将其他位置的配置文件或者配置类导入到当前的配置类之中,在读取并加载这个配置类的时候会把导入的这个资源给一起加载了。
4.@PropertyResource是什么?
@PropertyResource注解表示在读取到这个注解时,会根据这个注解中的属性,value="文件位置"来读取相应的properties文件
@PropertyReosurce(vlaue="位置/文件名.properties")
5.其他常用的注解
@ConponentScan是组件扫描器的意思,就是说这个注解根据其属性basePackage的路径位置扫描相应的注解(@Conponent,@Repository,@Service,@Controller),对含有这些注解的类进行对象实例化
@Conponent(basePackage="com.xxx.xxx")
@Value注解是给对象的属性赋值的一个注解。适用于普通类型
//动态赋值 ${} 表示可以读取properties后缀名文件中的属性 @Value(${})
@Resource注解也是给对象属性赋值的一个注解。适用于引用类型
@Resouce
@RequestMapping注解是接收前端发起的请求根据value的路径信息映射到相应的从controller对象之中
@RequestMapping()第二章 基础
1.SpringBoot的核心注解
@SpringBootApplication是SpringBoot的核心注解
package com.yuxijie; 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); } }
@SpringBootApplication是由 @SpringBootConfiguration, @EnableAutoConfiguration, @ConponentScan 三个注解组成 1.@SpringBootConfiguration注解是由@Configuration等注解组成的,说明:可以在这个注解中是@Bean注解创建对象,注入到容器中 2.@EnableAutoConfiguration注解是自动配置把常见的配置文件对象创建好放入到容器中,例如:可以把mybatis的对象创建好,注入到容器中 3.@ConponentScan注解:见上文
2.SpringBoot的配置文件
配置文件的名称:application
后缀名:properties(k=v)、yml(k:v)
properties形式:
#设置端口号 server.port=8080 #设置工程路径 server.servlet.context-path=/springboot #设置ip地址 server.address=127.0.0.1
yaml形式:
server: port: 8080 address: 127.0.0.1 servlet: context-path: /springboot
3.多环境配置
一般在实际开发中有很多环境:开发环境,测试环境,上线环境。
每种环境都需要不同的端口号,数据库,用户名,密码等乱七八糟的东西
使用多环境配置就可以方便切换不同的配置了
使用方式:首先创建配置文件,文件格式为:application-环境名称.properties(yml)
例如:application-dev application-test
#要想使用多环境配置文件首先要在默认的配置文件中加入一个标识,让程序去执行哪一个配置文件 spring.profiles.active=dev
4.怎么获取spring容器
根据我们所学应该知道Spring相关的一系列体系的前提就是将对象放到容器中进行统一的管理。
那么在SpringBoot中肯定也是有容器的,而下面这一行代码是Spring Boot项目的起点,而既然要启动工程必然就会生成容器
那么也就说明在个时候肯定是生成了容器对象的。
package com.yuxijie; 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); } }
通过观察源码,也证实了我上面的推断,SpringApplication.run()的返回值就是ApplicationContext
5.CommandLineRunner接口
这个接口是在容器创建完成之后就会调用其run()方法的,我们可以在容器启动的时候做一些初始化的 *** 作
package com.yuxijie; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application implements CommandLineRunner { public static void main(String[] args) { System.out.println("容器启动之前"); SpringApplication.run(Application.class, args); System.out.println("容器启动之后"); } @Override public void run(String... args) throws Exception { System.out.println("CommandLineRunner的run方法执行的时机"); } }
容器启动之前 . ____ _ __ _ _ /\ / ___'_ __ _ _(_)_ __ __ _ ( ( )___ | '_ | '_| | '_ / _` | \/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |___, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.6.1) 2021-12-26 15:14:58.389 INFO 10700 --- [ main] com.yuxijie.Application : Starting Application using Java 1.8.0_171 on DESKTOP-N1A2DIM with PID 10700 (C:Users22523Desktopspringbootdemo03targetclasses started by 22523 in C:Users22523Desktopspringboot) 2021-12-26 15:14:58.394 INFO 10700 --- [ main] com.yuxijie.Application : No active profile set, falling back to default profiles: default 2021-12-26 15:14:59.819 INFO 10700 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2021-12-26 15:14:59.833 INFO 10700 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2021-12-26 15:14:59.833 INFO 10700 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.55] 2021-12-26 15:14:59.959 INFO 10700 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/web] : Initializing Spring embedded WebApplicationContext 2021-12-26 15:14:59.959 INFO 10700 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1487 ms 2021-12-26 15:15:00.292 INFO 10700 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html] 2021-12-26 15:15:00.409 INFO 10700 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '/web' 2021-12-26 15:15:00.420 INFO 10700 --- [ main] com.yuxijie.Application : Started Application in 2.895 seconds (JVM running for 5.085) CommandLineRunner的run方法执行的时机 容器启动之后
我们可以清楚的看到run方法的执行实在刚刚创建完成的时候就调用的
####
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)