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

网站开发流程分为哪三个阶段wordpress 火车头发布规则

网站开发流程分为哪三个阶段,wordpress 火车头发布规则,wordpress视频优化,建设招标网是什么网站【Spring Boot 3】获取已注入的Bean 背景介绍开发环境开发步骤及源码工程目录结构总结 背景 软件开发是一门实践性科学#xff0c;对大多数人来说#xff0c;学习一种新技术不是一开始就去深究其原理#xff0c;而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历… 【Spring Boot 3】获取已注入的Bean 背景介绍开发环境开发步骤及源码工程目录结构总结 背景 软件开发是一门实践性科学对大多数人来说学习一种新技术不是一开始就去深究其原理而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中每次学习新技术总是要花费或多或少的时间、检索不止一篇资料才能得出一个可工作的DEMO这占用了我大量的时间精力。因此本文旨在通过一篇文章即能还原出可工作的、甚至可用于生产的DEMO期望初学者能尽快地迈过0到1的这一步骤并在此基础上不断深化对相关知识的理解。 为达以上目的本文会将开发环境、工程目录结构、开发步骤及源码尽量全面地展现出来文字描述能简则简能用代码注释的绝不在正文中再啰嗦一遍正文仅对必要且关键的信息做重点描述。 介绍 本文介绍开发Spring Boot应用如何获取已注入的Bean实例。 开发环境 分类名称版本操作系统WindowsWindows 11JDKOracle JDK21.0.1IDEIntelliJ IDEA2023.3.4构建工具Apache Maven3.9.6 开发步骤及源码 1 创建Maven工程添加依赖。 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.jiyongliang/groupIdartifactIdspringboot3-bean/artifactIdversion0.0.1/version/parentartifactIdspringboot3-bean-obtain/artifactIdpropertiesjava.version21/java.versionmaven.compiler.source21/maven.compiler.sourcemaven.compiler.target21/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncodingspring-boot.version3.2.2/spring-boot.versionlombok.version1.18.30/lombok.version/propertiesdependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/version/dependency/dependenciesbuildpluginManagementpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/version/plugin/plugins/pluginManagementpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build /project2 定义SpringBoot应用启动类。 package org.example.springboot;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class SpringBoot3BeanObtainApplication {public static void main(String[] args) {SpringApplication.run(SpringBoot3BeanObtainApplication.class, args);} }3 定义获取已注入Bean的核心类。 package org.example.springboot.manager;import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component;Component Getter Slf4j public class BeanManager {private final ApplicationContext applicationContext;public BeanManager(ApplicationContext applicationContext) {this.applicationContext applicationContext;}/*** 通过Bean名称获取*/public Object getBean(String name) {try {return this.applicationContext.getBean(name);} catch (NoSuchBeanDefinitionException e) {log.error(e.getMessage());return null;}}/*** 通过Bean类型获取* 如果存在同一类型的多个Bean实例则会抛出NoSuchBeanDefinitionException异常信息expected single matching bean but found 2*/public T T getBean(ClassT clazz) {try {return this.applicationContext.getBean(clazz);} catch (NoSuchBeanDefinitionException e) {log.error(e.getMessage());return null;}}/*** 通过Bean名称和类型获取*/public T T getBean(String name, ClassT clazz) {try {return this.applicationContext.getBean(name, clazz);} catch (NoSuchBeanDefinitionException e) {log.error(e.getMessage());return null;}} }4 定义测试Bean。 package org.example.springboot.bean;import lombok.AllArgsConstructor; import lombok.Data;AllArgsConstructor Data public class CustomBean {private Integer id;private String name; }5 配置注入Bean。 package org.example.springboot.config;import org.example.springboot.bean.CustomBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class CustomBeanConfig {Bean(beanX)public CustomBean beanX() {return new CustomBean(1, Bean-X);}Bean(beanY)public CustomBean beanY() {return new CustomBean(2, Bean-X);} }6 创建单元测试。 package org.example.springboot.manager;import jakarta.annotation.Resource; import org.assertj.core.api.Assertions; import org.example.springboot.bean.CustomBean; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;SpringBootTest class BeanManagerTests {AutowiredBeanManager beanManager;Resource(name beanX)CustomBean beanX;Resource(name beanY)CustomBean beanY;Testvoid test() {System.out.println(Test get bean by name);Assertions.assertThat(beanManager.getBean(beanX)).isSameAs(beanX);Assertions.assertThat(beanManager.getBean(beanY)).isSameAs(beanY);System.out.println(Test get bean by type);Assertions.assertThat(beanManager.getBean(CustomBean.class)).isNull();System.out.println(Test get bean by name and type);Assertions.assertThat(beanManager.getBean(beanX, CustomBean.class)).isSameAs(beanX);Assertions.assertThat(beanManager.getBean(beanY, CustomBean.class)).isSameAs(beanY);} }7 单元测试结果。 单元测试日志 Test get bean by name Test get bean by type 2024-03-08T20:31:34.84508:00 ERROR 18872 --- [ main] o.e.springboot.manager.BeanManager : No qualifying bean of type org.example.springboot.bean.CustomBean available: expected single matching bean but found 2: beanX,beanY Test get bean by name and type从日志中可以看出测试根据类型获取注入的Bean时抛出了异常因为找到2个同样类型的Bean无法判断应该返回哪个Bean因此通过类型获取Bean时有且仅有一个类型匹配的Bean才会正常返回。 工程目录结构 总结 测试用的Bean和配置注入放在 src/test 目录下是为了辅助测试。
http://www.hkea.cn/news/14587068/

相关文章:

  • 自己搭建视频播放网站wordpress和lofter
  • 网站建设公司哪家好 运峰科技企业网站开发用什么
  • 网站顶部公告代码安徽制作网站的公司哪家好
  • 沈阳网站建设信息珠海市香洲区建设局网站
  • 重庆所有做网站的公司浙江省建设工程质量安全管理协会网站
  • 什么行业做网站合适沈阳男科正规医院
  • 东莞网站建设 烤活鱼ps 做ui比较好的网站
  • 分类信息网站营销wordpress 域帐户
  • 做网站是干什么用的越秀企业网站建设
  • 安徽海绵城市建设协会网站公共服务标准化的意义
  • 网站管理助手 二级域名建设局网站施工合同范本
  • 旺道网站排名优化网站建设找刘贺稳营销专家
  • 祭祖网站怎么做wordpress 管理员
  • 免费无版权图片网站风险地区查询最新
  • 推广电影链接赚佣金seo线上培训多少钱
  • 做网站电脑开一天用多少钱wordpress 标签中文
  • 学校网站建设与管理办法安康 住房城乡建设部网站
  • 做网站推广托管费用金乡县住房与城乡建设局网站
  • 长尾词挖掘工具爱站网给手机开发网站
  • 如何做正规电影网站求职简历模板2021
  • 申请建设部门网站的报告简单网页制作过程
  • wordpress api文档宁波seo关键词排名优化
  • 电梯网站建设网站开发的发展
  • 成都网站商城建设百度店铺
  • 商丘高端网站建设做公司的宣传网站需要注意什么
  • 各大门户网站自动建站网站源码
  • 设计网站做的工作步骤是php网站助手
  • 互联网金融网站设计郑州百姓网征婚交友
  • 淘宝怎么才能发布网站建设wordpress 插件 页面
  • 网站改版需要注意哪些seo问题微信公众号 视频网站开发