当前位置: 首页 > news >正文

学习笔记051——SpringBoot学习2

文章目录

  • Spring Boot 原理
    • 1、@SpringBootConfiguration
    • 2、@ConfigurationProperties
    • 3、@ComponentScan
    • 4、@EnableAutoConfiguration

Spring Boot 原理

Spring Boot 可以自动读取配置文件,将项目所需要的组件全部自动加载到 IoC 容器中,包括两部分

  • 开发者自定义组件(Controller、Service、Repository)
  • 框架自带的组件(DispatcherServlet、SqlSessionFactory)

Spring Boot 启动类注解 @SpringBootApplication 是由 3 个注解组成

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

1、@SpringBootConfiguration

@SpringBootConfiguration 本质上就是一个 @Configuration

@Configuration 的作用是标注一个配置类,将一个 Java 类标注成为一个配置类,用来取代 XML 的,向 IoC 容器中注入对象的。

基于 XML 的配置方式

package com.southwind.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Account {private String username;private String password;
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- 配置一个对象 --><bean id="account" class="com.southwind.entity.Account"><property name="username" value="tom"></property><property name="password" value="123"></property></bean></beans>
package com.southwind;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) {ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");System.out.println(applicationContext.getBean("account"));}
}

@Configuration

配置类,Java 类相当于 XML 文件

package com.southwind.configure;import com.southwind.entity.Account;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class AccountConfiguration {@Beanpublic Account account(){return new Account("cat","456");}
}

2、@ConfigurationProperties

可以直接读取 YAML 文件中的数据,并封装到 bean 中,给 bean 的属性赋值。

package com.southwind.entity;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;@Data
@ConfigurationProperties(prefix = "people")
public class People {private Integer id;private String name;private String tel;
}
package com.southwind.configure;import com.southwind.entity.People;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;@Configuration
@EnableConfigurationProperties(People.class)
public class PeopleConfiguration {
}
people:id: 1name: 张三tel: 123456789

3、@ComponentScan

将开发者自定义的组件进行扫描注入

4、@EnableAutoConfiguration

将框架自带的组件进行扫描注入

@AutoConfigurationPackage

@Import

@Import 注入 bean,结合一个选择器来注入,选择器提供要注入的 bean 的信息,@Import 实现注入

package com.southwind.entity;import lombok.Data;@Data
public class User {private String cardId;private Double score;
}
package com.southwind.selector;import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;public class UserSelector implements ImportSelector {@Overridepublic String[] selectImports(AnnotationMetadata annotationMetadata) {String[] names = {"com.southwind.entity.User"};return names;}
}
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.southwind.configure.ImportConfig

在这里插入图片描述

http://www.lryc.cn/news/497737.html

相关文章:

  • crush rule 20 type does not match pool
  • BA是什么?
  • 通过docker 搭建jenkins环境;
  • 10-高级主题
  • harbor常见问题及解决方法分享
  • 行列式与线性方程组解的关系
  • 四、自然语言处理_02RNN基础知识笔记
  • Spring 容器管理 Bean
  • SpringBoot开发——Spring Boot3.4 强大的结构化日志记录
  • 信号和槽思维脑图+相关练习
  • Unity Feel插件快速入门
  • 数据链路层(四)---PPP协议的工作状态
  • 【C++】入门【六】
  • UE5 C++ 不规则按钮识别,复选框不规则识别 UPIrregularWidgets
  • Elasticsearch Serverless 现已正式发布
  • 如何使用apache部署若依前后端分离项目
  • openEuler安装UKUI桌面
  • 深入理解Oracle DB的锁和闩
  • jenkins+github+springboot自动部署
  • HTML5系列(10)-- 地理位置服务指南
  • 【MySQL 进阶之路】SQL 优化
  • Web3的技术栈详解:解读区块链、智能合约与分布式存储
  • [在线实验]-在docker中运行clickhouse
  • Rust常用命令总结
  • Ant-Design X,AI组件库
  • Matplotlib 内置的170种颜色映射(colormap)
  • 在linux虚拟机安装VMware tools
  • 初识EasyFramework
  • OpenStack-Glance组件
  • SPC三种判定准则的算法