SpringBoot学习(一)
一、Maven依赖
<!-- 引入父项目依赖,包含了所需大部分jar包的版本号(版本仲裁)等 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.7.RELEASE</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
二、SpringBoot的自动配置
SpringBoot自动帮我们配置了以下内容
- Tomcat
- SpringMVC(引入全套组件,配置常见功能)
- Web常见功能 字符编码问题
- 默认包结构
- 主程序(@SpringBootApplication)所在包及其同目录下所有包均可自动识别
- @SpringBootApplication(scanBasePackages = “com.controller”) 可指定扫描的包
- 各种配置拥有默认值
- 按需加载所有自动配置项
springboot所有的自动配置功能都在spring-boot-autoconfiger包里
三、配置Bean
- 方式一:使用xml配置的方式
使用此种方式配置的话我们需要为该文件配置路径:
在主类添加注解@ImportResource(value = {“classpath:***.xml”}) - 方式二:使用配置类
- 新建一个类,添加@Configuration注解,标明此类为配置类
- 在此类中添加创建对象的方法,并在方法上注明@Bean
@Configuration(proxyBeanMethods = true)
public class MyConfig {
//在容器中添加对象 方法名为组件id,返回的对象为注入容器中的实例
//经bean标签注册后,在容器中会产生该对象单例
@Bean
public User user02(){
User u = new User("zhangsan");
u.setPet(Jerry());
return u;
}
@Bean
public Pet Jerry(){
return new Pet("Jerry");
}
}
- 配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例
- 配置类本身也是组件
- proxyBeanMethods:(默认是true)代理bean的方法 根据是否有组件依赖问题来设置,主要看是否要依赖容器中同一对象
a. Full(proxyBeanMethods = true)全配置,由容器中MyConfig对象调用Jerry()方法时会先从容器中找该对象并返回
优点:springboot会检查容器,运行速度会降低
应用场景:配置类组件之间有依赖关系
b. Lite(proxyBeanMethods = false)轻量级配置,由容器中MyConfig对象调用Jerry()方法时会生成新对象,并不是返回容器中对象
优点:springboot不会检查容器,运行速度加快
应用场景:配置类之间无依赖关系
四、部分注解
- @Conditional 条件注解在满足条件的情况下向容器中注入对象
- @Import({User.class, DBHelper.class}) 类型注入,向容器中注入该类型对象
- @ImportResource(value = {“classpath:***.xml”}) 原生文件的导入
五、配置绑定
将配置文件中的属性与JavaBean中的属性相绑定,只有注册到容器中的对象才能进行绑定
- @EnableConfigurationProperties + @ConfigurationProperties
- @Component + @ConfigurationProperties