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

网站名称搜索不到视频网站哪个做的好处

网站名称搜索不到,视频网站哪个做的好处,网站改版申请,顺企网我做网站装配#xff1a;创建bean#xff0c;并加入IOC容器。 注入#xff1a;创建bean之间的依赖关系。 1、类自动装配 SpringBoot 自动装配使得开发人员可以轻松地搭建、配置和运行应用程序#xff0c;而无需手动管理大部分的 bean 和配置。 Spring Boot 的自动装配机制与模块…装配创建bean并加入IOC容器。 注入创建bean之间的依赖关系。 1、类自动装配 SpringBoot 自动装配使得开发人员可以轻松地搭建、配置和运行应用程序而无需手动管理大部分的 bean 和配置。 Spring Boot 的自动装配机制与模块化和复用化密切相关它们之间存在着相互促进和互补的关系。 模块化 Spring Boot 通过 Spring Starter 的方式提供了一种模块化的解决方案。每个 Starter 都是一个独立的模块它包含了特定功能的配置、依赖和自动装配。 开发者可以根据项目的需求选择性地引入需要的 Starter从而实现功能上的模块化。这使得项目结构更清晰、功能更独立并且可以根据需求进行定制和组合。 同时Spring Boot 本身也是一个模块化的框架它将各种功能划分为不同的模块如 Web、数据访问、安全等使得开发者能够根据需要选择性地引入和使用这些功能模块。 复用化 Spring Boot 的自动装配机制大大提高了代码的复用性。通过自动扫描和自动装配Spring Boot 能够将各种功能模块自动集成到应用程序中避免了重复编写和配置的工作。 Starter 的设计也是为了提高代码的复用性。开发者可以将常用的功能打包成 Starter供其他项目引入和使用从而避免了重复开发相似的功能。 此外Spring Boot 的约定大于配置的原则也促进了代码的复用。通过统一的项目结构、配置规范和命名规范开发者能够更容易地理解和使用他人编写的代码提高了代码的可维护性和可复用性。 总的来说Spring Boot 的自动装配机制使得模块化和复用化更加便捷和高效。开发者可以根据项目的需求选择性地引入功能模块同时也可以将常用的功能封装成 Starter以供其他项目复用。 这种模块化和复用化的设计理念使得 Spring Boot 在开发中得到了广泛的应用和认可。 1.1 自动装配原理那些bean会被自动装配 SpringBoot 会根据定义在 classpath 下的类自动给你生成一些 Bean并且加载到 Spring 的 Context 中。 那么它的原理是什么呢哪些 Bean 可以自动装配到容器里面呢 其实在 SpringBoot 内部会读取 classpath 下 META-INF/spring.factories 文件中的所配置的类的全类名。 我们可以找到 key为 org.springframework.boot.autoconfigure.EnableAutoConfiguration 对应的值。 可以发现就是一系列的 xxxAutoConfiguration随便找两个类看一下就是标记了 Configuration 的配置类并且通过一些条件注解来判断、决定哪些 Bean 应该自动注入到容器中。 ⚠️注意 在SpringBoot 2.7 版本后spring.factories 方式已经被标记为废弃 SpringBoot 2.7 版本后建议使用新的配置文件 /META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 但是在加载到时候会同时加载这两个文件。 比如自己可以配置需要加入的bean并在类上使用AutoConfiguration注解。包名和配置示例如下 可以通过条件注解的方式排除某些bean加载到容器中节省启动时间和内存 1.2 自动装配的实现 1.2.1 自动装配实现 SpringBoot 是如何实现自动装配的先看一个大概步骤 1、 组件扫描Component ScanningSpring Boot 使用组件扫描来查找和注册标有特定注解的 bean。默认情况下Spring Boot 将扫描主应用程序类所在的包及其子包下的所有类。标有 Component、Service、Repository 和 Controller 注解的类将被注册为 bean。 2、条件化的 bean 注册Conditional Bean RegistrationSpring Boot 使用条件化的 bean 注册来根据条件自动注册特定的 bean。这些条件可以基于环境属性、系统属性、类路径是否包含特定类等。当条件满足时相应的 bean 将被注册到 Spring 的应用程序上下文中。 3、自动配置Auto-ConfigurationSpring Boot 基于类路径中的 jar 包和已配置的条件自动配置应用程序上下文。Spring Boot 提供了大量的自动配置类这些类负责根据条件注册特定的 bean以及设置应用程序的默认配置。这样开发人员就无需手动配置大部分常见的 bean 和配置而是可以依赖于 Spring Boot 的自动配置。图示如下 SpringBoot 会去扫描指定的配置类然后通过条件判断是否加载 Bean。 1.2.2 向容器注入bean 主要方式见上面的自动装配下来举例几个 2.2.1 Component ComponentScan SpringBoot启动类的SpringBootApplication注解中就标注了 ComponentScan注解这个注解默认扫描当前包及其子包下的标注有Component、Controller、Service、Repository等的类加载到容器中。 2.2.2 Import注解 2.2.3 Configuration Bean 只需要在配置类上标注上Configuration声明配置类在某个方法上标注Bean并返回一个需要注入的对象即可 Configuration public class MyBeanConfiguration {Bean(name myBean)public MyBean initMyBean() {return new MyBean();} }-------------------------------------------------SpringBootApplication ComponentScan(basePackages {com.example.demo.*, com.alibaba}) // 需指明路径。 public class emptyDemoApplication {public static void main(String[] args) {ConfigurableApplicationContext context SpringApplication.run(emptyDemoApplication.class, args);Object myBean context.getBean(myBean);System.out.println(myBean); // MyBean(filedAnull, fieldBnull)}2.1.4 手动注入实现接口BeanDefinitionRegistryPostProcessor 我们知道SpringBean的生命周期中有很多前后置方法整体上可以概括为普通类对象转化为beanDefinition再转化为spring中的bean这么三个阶段。 而Spring会在启动的AbstratApplicationContxt类中的refresh方法中执行 invokeBeanFactoryPostProcessors这个方法中会回调所有实现 BeanDefinitionRegistryPostProcessor接口的钩子方法。 可以简单理解成beanDefinition加载完毕之后会对beanDefinition进行后置处理。所以理论上实现BeanDefinitionRegistryPostProcessor接口就可以手动将bean注入到容器中。 下面举例以手动注入HashMap为例 public class TestBeanProcessor {public static void main(String[] args) {AnnotationConfigApplicationContext applicationContext new AnnotationConfigApplicationContext();UptownBeanProcessor beanDefinitionRegistryPostProcessor new UptownBeanProcessor();applicationContext.addBeanFactoryPostProcessor(beanDefinitionRegistryPostProcessor);applicationContext.refresh();Object bean applicationContext.getBean(test_map);System.out.println(bean);} } class UptownBeanProcessor implements BeanDefinitionRegistryPostProcessor {Overridepublic void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {AbstractBeanDefinition beanDefinition BeanDefinitionBuilder.rootBeanDefinition(HashMap.class).getBeanDefinition();registry.registerBeanDefinition(test_map, beanDefinition);}Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {} }1.3 自动装配的核心注解 Spring Boot 实现自动装配的几个核心注解包括 SpringBootApplication这是一个组合注解相当于同时使用了 Configuration、EnableAutoConfiguration 和 - ComponentScan 注解。它标记了主应用程序类并告诉 Spring Boot 开始组件扫描、自动配置和装配。EnableAutoConfiguration该注解用于启用 Spring Boot 的自动配置功能。它会根据应用程序的依赖关系和当前环境自动注册所需的 bean。ComponentScan该注解用于启用组件扫描以便 Spring Boot 可以自动发现和注册标有 Component、Service、Repository 和 Controller 注解的类。ConditionalOnClass 和 ConditionalOnMissingClass这两个条件化注解用于根据类路径上是否存在特定的类来决定是否注册 bean。ConditionalOnClass 在类路径上存在指定类时生效而 ConditionalOnMissingClass 在类路径上不存在指定类时生效。ConditionalOnBean 和 ConditionalOnMissingBean这两个条件化注解用于根据是否存在特定的 bean 来决定是否注册 bean。ConditionalOnBean 在容器中存在指定的 bean 时生效而 ConditionalOnMissingBean 在容器中不存在指定的 bean 时生效。ConditionalOnProperty该条件化注解用于根据配置属性的值来决定是否注册 bean。它可以根据配置文件中的属性值来决定是否启用或禁用特定的 bean。 这些注解结合在一起为 Spring Boot 提供了自动装配的能力。 从源码层面来说Spring Boot 自动装配的核心实现主要就是依赖 SpringbootApplication 这个注解它又是个组合注解由3部分组成 SpringBootConfiguration标注是一个配置类EnableAutoConfiguration开启自动装配 AutoConfigurationPackage指定默认的包规则将主程序类所在包及其子包下的组件扫描到容器里 Import(AutoConfigurationImportSelector.class)导入AutoConfigurationImportSelector并通过 selectImports 方法读取 META-INF/spring.factories 文件中配置的全类名并按照条件过滤注入需要的 beanComponentScan配置扫描路径用来加载 bean 1.3.1 条件注解 SpringBoot条件注解 Spring 为我们提供了条件化注解可以让我们控制 bean 在某种条件下才加载主要就是 Conditional 注解通过指定条件然后根据条件结果执行。 Spring 还为我们提供了一些已有的条件可以让我们直接使用 ConditionalOnClass当类路径中存在指定的类时生效。 ConditionalOnMissingClass当类路径中不存在指定的类时生效。 ConditionalOnBean当容器中存在指定的 Bean 时生效。 ConditionalOnMissingBean当容器中不存在指定的 Bean 时生效。 ConditionalOnProperty当指定的配置属性存在且值符合条件时生效。 ConditionalOnResource当类路径下存在指定资源文件时生效。 ConditionalOnWebApplication当应用是 Web 应用时生效。 ConditionalOnNotWebApplication当应用不是 Web 应用时生效。 1.4 如何自定义一个 SpringBoot starter Spring Boot 的自动装配机制使得模块化和复用化更加便捷和高效。 开发者可以根据项目的需求选择性地引入功能模块同时也可以将常用的功能封装成 Starter以供其他项目复用。 SpringBoot 这种模块化和复用化的设计理念使得 Spring Boot 在开发中得到了广泛的应用和认可。 1.4.1 社区常用starter SpringBoot Starter用于简化开发过程并提供各种功能的集成Spring Boot 社区提供了许多常用的 Starter常用的如下 spring-boot-starter-web用于构建 Web 应用程序的 Starter包括 Spring MVC、Embedded Tomcat、Jackson、Validation 等。spring-boot-starter-data-jpa用于集成 Spring Data JPA 和 Hibernate 的 Starter用于访问和操作关系型数据库。spring-boot-starter-data-mongodb用于集成 Spring Data MongoDB 的 Starter用于访问和操作 MongoDB 数据库。spring-boot-starter-security用于集成 Spring Security 的 Starter提供身份验证和授权功能。spring-boot-starter-test用于测试 Spring Boot 应用程序的 Starter包括 JUnit、Spring Test、Spring Boot Test 等。spring-boot-starter-actuator用于监控和管理 Spring Boot 应用程序的 Starter包括健康检查、指标、日志级别设置等。spring-boot-starter-log4j2用于集成 Log4j2 日志框架的 Starter用于记录应用程序日志。spring-boot-starter-mail用于集成邮件发送功能的 Starter包括 JavaMail 和 Spring Framework 的邮件支持。spring-boot-starter-cache用于集成缓存支持的 Starter包括 Spring 缓存抽象和常见的缓存实现如 Ehcache、Redis、Caffeine 等。spring-boot-starter-actuator用于添加生产就绪功能如指标、健康检查、审计、HTTP追踪等。 1.4.2 自定义starter 基本的结构图 自定义步骤如下一般是一个新建的module 1、新建 SpringBoot 项目引入 SpringBoot 相关依赖 2、创建 Configuration 配置类在配置类里面声明要注入的 Bean还可以结合 Conditional 条件注解按需加载 Configuration ConditionalOnClass(MyStarterService.class) public class MyStarterAutoConfiguration {// 自动配置的内容例如注册 Bean、初始化等 }3、在项目的 resources 包下创建 META-INF/spring/ 文件并且配置类的全限定名 4、其他项目或者模块引入即可 dependencygroupIdcom.warm/groupIdartifactIdcustom-starter/artifactIdversion0.0.1-SNAPSHOT/version /dependency2、bean的注入实现 就是将一个对象注入到另一个对象中以便它们可以相互协作创建依赖关系提高了代码的可维护性和可读性 2.1 注入原理 2.2 注入的几种实现方式 2.2.1 通过属性字段注入 注解Autowired或Resource 字段注入是一种不太常用的注入方式它使用Autowired或者Resource注解直接将需要注入的Bean注入到类的字段中。下面是一个示例 Autowiredprivate ApplicationContext applicationContext;优点 代码少简洁明了。 新增依赖十分方便不需要修改原有代码 缺点 容易出现空指针异常。 空指针异常不是必现的与bean的实例化顺序有关。有时把依赖的bean改个名字就会报空指针异常。 会出现循环依赖的隐患。 2.2.2 通过setter方法注入 Setter方法注入是另一种常用的注入方式。开发者可以在Bean类中定义Setter方法并使用Autowired注解将需要注入的Bean作为参数传入。Spring容器会自动调用这些Setter方法并将Bean注入到它们中。下面是一个示例 private AdminUserApi adminUserApi;//Autowired是用在成员变量的Setter函数上。Autowiredpublic void setAdminUserApi(AdminUserApi adminUserApi) {this.adminUserApi adminUserApi;}但是我的通过setter方法注入为null我通过setter方法对象传递 if (handler instanceof AbstractSliderDesensitizationHandler) {((AbstractSliderDesensitizationHandler?) handler).setAdminUserApi(adminUserApi);}2.2.3 通过构造函数final注入 是Springboot最为推荐的一种使用方式。 构造函数注入是最常用的注入方式之一。开发者可以在Bean类的构造函数中声明需要注入的Bean并在应用程序启动时Spring容器会自动将这些Bean注入到构造函数中。下面是一个简单的示例 Component SuppressWarnings(rawtypes) public class StringDesensitizeSerializer extends StdSerializerString implements ContextualSerializer {private final ApplicationContext applicationContext;private final AdminUserApi adminUserApi;//Autowiredpublic StringDesensitizeSerializer(ApplicationContext applicationContext, AdminUserApi adminUserApi) {super(String.class);this.applicationContext applicationContext;this.adminUserApi adminUserApi;}结果注入成功不是null 重点 不能提供无参构造方法否则Springboot默认会加载无参的构造方法Bean实例对象会为nullSpringboot官方建议使用final来修饰成员变量然后通过构造方法来进行注入。原因final修饰的成员变量是不能够被修改的不加final虽然也能注入Bean,但是若被其他人修改为null,可能会导致不必要的问题所以最好是加final。 若手工写构造方法觉得麻烦也可以使用lombok中的 RequiredArgsConstructor RequiredArgsConstructor public class StringDesensitizeSerializer extends StdSerializerString implements ContextualSerializer {private final ApplicationContext applicationContext;private final AdminUserApi adminUserApi;}2.2.4 通过Qualifier注解 该 注解可以指定注入的实现类某接口多个 实现类 Service public class MyService {private final MyRepository repository;Autowiredpublic MyService(Qualifier(myRepositoryImpl) MyRepository repository) {this.repository repository;} }3、名词介绍 定义Bean 是在 Spring 容器中被实例化、管理和维护的对象。一个 Bean 可以是任何普通的 Java 对象例如 POJO、Service、Respository、Controller 等等。将一个类声明为 Bean 的方式可以是在类级别上使用 ‘Component’ 注解或其派生注解‘Service’、‘Repository’、‘Controller’等也可以是通过配置文件进行显式的声明。 实例化Spring 容器负责实例化 Bean。当应用程序启动时Spring 容器会根据配置信息或注解扫描的结果找到并实例化所有被标记为 Bean 的类并将它们加入容器中。实例化的过程由 Spring 的 IoC 容器负责。 管理一旦 Bean 被实例化Spring 容器将负责管理 Bean 的生命周期和依赖关系。它会根据配置文件或注解的信息自动解决 Bean 之间的依赖关系确保在需要的时候正确的注入依赖。Spring 容器还会负责销毁不再需要的 Bean。 依赖注入依赖注入是 Spring 框架的一个重要特性它允许通过自动或显式配置的方式将 Bean 的依赖项注入到其它 Bean 中。依赖注入可以通过构造函数注入、Setter 方法注入或字段注入的方式实现其中最常见的是使用 ‘Autowired’注解进行注入。 作用域Spring 框架提供了多种作用域scope来管理 Bean 的生命周期。常见的作用域包括单例Singleton、原型Prototype、会话Session、请求Request等。默认情况下Bean 是单例的即每个容器中只存在一个实例。但可以根据需要配置其它作用域。 Component // 默认为单例 自动装配Spring Boot 支持自动装配Auto - wiring它能够根据类型或名称自动解析和注入依赖关系。通过在需要注入的字段、构造函数或 Setter 方法上使用 ‘Autowired’ 注解Spring 容器会自动查找并注入对应的 Bean。 Component public class MyService { Autowired private MyBean myBean; // 使用myBean的代码… } 总的来说Bean 是 Spring 框架中被实例化、管理和维护的对象。通过在类上使用 ‘Component’ 注解或其派生注解将一个类声明为 Bean并将其交给 Spring 容器处理。Spring 容器负责实例化、管理和维护 Bean 的生命周期和依赖关系。通过依赖注入和自动装配应用程序可以方便的使用和管理 Bean。
http://www.dnsts.com.cn/news/150050.html

相关文章:

  • wordpress站点logo手机网站内容设计方案
  • 联合智慧旅游建设旅游门户网站网站后台制作教程
  • 怎样做网站框架图求一个网站开发接项目的平台
  • 网站建设文件夹名字建设通网站是做什么的
  • 地产网站建设网站建设教程 金旭亮
  • 兖州网站制作wordpress不能添加用户
  • 网站做的比较好的贸易公司跨境电商平台有哪些前期费用
  • wordpress访问网站很慢门户网站是啥意思
  • 网站建设情况的自查报告常州网站制作
  • 运城 网站 建设 招聘wordpress 主要
  • dede旅游网站源码 多城市凡科做网站需要备案吗
  • 网站设计 书籍一级做a爱免费网站
  • 用wordpress建站网页设计与制作教程西北工业大学出版社
  • 网站开发行业信息网做文化传播公司网站
  • 惠州网站建设企业上海网络优化seo
  • 网站ipc备案2024年的新闻
  • 山东建设厅网站网址科技局网站查新怎么做
  • 铭做网站建设赣州做网站建设
  • 怎么自己建立网站及建立网站方法山西网络推广哪家专业
  • 网站开发新闻上海营销型网站报价
  • 怎样建立自己的网站卖东西工业设计厂家
  • 房山网站建设优化seo深圳o2o网站建设
  • 个人如何建立公司网站云开发小程序源码
  • 北京网站建设排名浩森宇特做网站上是外部连接怎么改
  • 速冻蔬菜做哪个国际网站好做川菜的网站
  • 服装图案素材网站wordpress根目录修改主题
  • 网站vip怎么做wordpress安装主题链接路径
  • 建设系统网站首页郑州做响应式网站
  • 门户网站注意事项百度网站建立
  • 黄石港区建设局网站驾校视频网站模板