自己做网站有何意义官方网站弹幕怎么做

张小明 2025/12/31 16:00:56
自己做网站有何意义,官方网站弹幕怎么做,经典 网站,网站开发一般过程文章目录Ⅰ. 什么是 IOC 和 DI❓❓❓Ⅱ. 五大注解Ⅲ. 注解 BeanⅣ. 扫描路径 ComponentScanⅤ. 依赖注入一、三种注入方式 Autowired① 属性注入② 构造方法注入③ Setter方法注入三种注入方式的区别二、Autowired 存在的问题① Primary② Qualifier③ Resource⭐⭐⭐Ⅰ. 什么是…文章目录Ⅰ. 什么是 IOC 和 DI❓❓❓Ⅱ. 五大注解Ⅲ. 注解 BeanⅣ. 扫描路径 ComponentScanⅤ. 依赖注入一、三种注入方式 Autowired① 属性注入② 构造方法注入③ Setter方法注入三种注入方式的区别二、Autowired 存在的问题① Primary② Qualifier③ Resource⭐⭐⭐Ⅰ. 什么是IOC和DI❓❓❓IOC全称是Inversion of Control中文叫 “控制反转”。简单的说就是把对象的创建和依赖关系的维护交给框架管理而不是自己在代码中new出来。IOC是一种设计思想而注解DI是实现IOC的方式之一。IOC的好处如下所示优点说明解耦组件之间不直接 new依赖由框架注入易测试方便用 mock 对象进行单元测试灵活替换想换实现类只改配置或注解不改业务代码更清晰的架构各层职责分明依赖关系可视化此外Spring容器管理的对象称为Bean对象。Component和Autowired是Spring框架中非常核心的两个注解是实现IOC控制反转和DI依赖注入的关键工具。Component一个类级注解用于将普通的Java类声明为Spring管理的Bean。Autowired一个非类级注解用于自动注入依赖对象而无需手动new。如何从Spring容器中获取对象❓❓❓可以从ApplicationContext中的getBean()方法获取如下所示publicstaticvoidmain(String[]args){// 在启动类中拿到ApplicationContext对象ApplicationContextcontextSpringApplication.run(Application.class,args);// 第一种传参方式UserComponentbean1context.getBean(UserComponent.class);bean1.func();// 第二种传参方式需要强转UserConfigbean2(UserConfig)context.getBean(userConfig);bean2.func();}而getBean()方法实际上是ApplicationContext是实现了BeanFactory接口得到的并且在其基础上添加了对国际化支持、资源访问支持、以及事件传播等方面的支持 此外getBean()对于Bean的名称约定如下所示以小写字母开头然后使用小驼峰的格式。如类名为UserController则Bean名为userController。特殊情况当第一个和第二个字母为大写时则保留原始的大小写。如类名为UController则Bean名为UController。Ⅱ. 五大注解注解作用常见使用位置Component通用组件标识该类为Bean工具类、业务组件Controller控制层接收前端请求MVC控制器类Service业务逻辑层Service类Repository数据持久层DAO类MyBatis MapperConfiguration配置类用于代替XML配置常见的目录结构规范如下所示src └── main └── java └── com.example.project ├── controller # 控制器层Controller/RestController ├── service # 业务逻辑层Service ├── dao/mapper # 数据访问层Repository/Mapper ├── model/entity # 实体类POJO/DTO/DO/VO └── config # 配置类Configuration注意五大注解均可以起别名Ⅲ. 注解BeanBean告诉spring这个方法返回的对象要放进IoC容器ApplicationContext里成为可被任何其他Bean注入的组件。注意事项Bean要配合五大注解使用不能单独使用在Spring中默认情况下Bean的作用域是singleton单例的即整个Spring容器中只存在一个该Bean实例。对于同一个类要定义多个Bean对象的话需要对不同的方法进行注解然后使用ApplicationContext对象的getBean()方法中传入Bean名称的方式进行获取对应的Bean名称是对应方法的名称当然也可以进行重命名默认重命名的属性是name如下所示ComponentpublicclassUserComponent{Bean({u3})publicUseru1(){returnnewUser();}BeanpublicUseru2(){returnnewUser();}}publicstaticvoidmain(String[]args){ApplicationContextcontextSpringApplication.run(Application.class,args);// 通过 Bean 名获取不然 Spring 会报错识别不出要哪个对象// 并且可以对 Bean 对象进行重命名Useru1(User)context.getBean(u3);Useru2(User)context.getBean(u2);System.out.println(u1);System.out.println(u2);}// 运行结果com.liren.ioc.model.Userabbe000com.liren.ioc.model.User3f81621cⅣ. 扫描路径ComponentScanSpring默认扫描的范围是SpringBoot启动类所在包及其子包如下图所示一般也推荐直接把启动类放到项目目录中但是如果需要放在特定包内还需要访问其它非子包的包内则需要使用ComponentScan来添加要扫描的包如下所示当然也可以用{}配置多个包路径ComponentScan(com.liren.ioc.service)// 指定扫描com.liren.ioc.service包中的内容SpringBootApplicationpublicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Application.class,args);}}Ⅴ. 依赖注入一、三种注入方式Autowired① 属性注入这种方式虽然不是官方最推荐的但却是日常开发最常用的。ControllerpublicclassUserController{AutowiredprivateUserServiceuserService;publicvoidfunc(){System.out.println(UserController);userService.func();}}② 构造方法注入注意如果类只有一个构造方法那么Autowired注解可以省略如果类中有多个构造方法那么需要添加上Autowired来明确指定到底使用哪个构造方法。ControllerpublicclassUserController{privateUserServiceuserService;// 默认构造方法publicUserController(){}// 如果有默认构造方法那么不显式写上Autowired的话会去调用默认构造方法AutowiredpublicUserController(UserServiceuserService){this.userServiceuserService;}publicvoidfunc(){System.out.println(UserController);userService.func();}}③Setter方法注入ControllerpublicclassUserController{privateUserServiceuserService;AutowiredpublicvoidsetUserService(UserServiceuserService){this.userServiceuserService;}publicvoidfunc(){System.out.println(UserController);userService.func();}}三种注入方式的区别属性注入优点简洁使用方便缺点只能用于IOC容器如果是非IOC容器不可用并且只有在使用的时候才会出现空指针异常不能注入一个Final修饰的属性构造函数注入Spring 4.X 推荐优点可以注入final修饰的属性注入的对象不会被修改依赖对象在使用前一定会被完全初始化因为依赖是在类的构造方法中执行的而构造方法是在类加载阶段就会执行的方法。通用性好构造方法是JDK支持的所以更换任何框架它都是适用的缺点注入多个对象时代码会比较繁琐Setter 注入Spring 3.X 推荐优点方便在类实例之后重新对该对象进行配置或者注入缺点不能注入一个final修饰的属性注入对象可能会被改变因为setter方法可能会被多次调用就有被修改的风险二、Autowired存在的问题当同一个类存在多个Bean时使用Autowired会存在问题如下所示如何解决上述问题呢❓❓❓Spring提供了以下几种解决方案PrimaryQualifierResource①Primary当存在多个相同类型的Bean注入时加上Primary注解来确定默认的实现这个注解加在要被指定注入的Bean对象上如下所示ComponentpublicclassUserComponent{PrimaryBeanpublicUseru3(){returnnewUser();}BeanpublicUseru4(){returnnewUser();}}②Qualifier注意该注解不能单独使用需要配合Autowired才行ControllerpublicclassUserController2{Qualifier(u3)// 指定对应Bean的名称AutowiredprivateUseruser;publicvoidfunc(){System.out.println(UserController2);}}③Resource⭐⭐⭐该注解可以单独使用不过需要显式用属性name来指定对应的Bean对象ControllerpublicclassUserController2{Resource(nameu3)// 需要显式写一下name来指定privateUseruser;publicvoidfunc(){System.out.println(UserController2);}}需要注意的是Resource是JDK自带的支持更多的参数设置而Autowired是Spring框架提供的没有前者功能那么多Autowired的装配顺序如下图所示
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设与开发试卷南通网站建设兼职

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个CSS媒体查询效率对比工具,左侧展示传统手工编写的响应式代码(约200行),右侧展示AI生成的等效代码。要求:1) 实现…

张小明 2025/12/25 22:26:38 网站建设

广州做网站企业响应式模板网站建设哪家好

第一章:Open-AutoGLM 硬件适配范围行业对比Open-AutoGLM 作为面向自动驾驶场景的开源大语言模型框架,其硬件适配能力直接影响部署效率与行业落地可行性。不同应用场景对算力、功耗和实时性要求差异显著,因此需系统评估其在主流硬件平台上的兼…

张小明 2025/12/25 22:26:43 网站建设

西安SEO网站建设wordpress 数据库文件

Windows Server 2012 磁盘管理与存储优化指南 在 Windows Server 2012 中,磁盘管理和存储优化是服务器管理的重要组成部分。本文将详细介绍如何实现 RAID 卷、管理磁盘存储配额、使用数据重复数据删除功能以及配置存储池和虚拟磁盘等内容。 1. 实现 RAID 卷 RAID(独立磁盘…

张小明 2025/12/25 22:26:41 网站建设

wordpress open sans西安seo外包费用

本文分享自天翼云开发者社区《从random随机数看验证码重复数字》.作者:王****淋 ## 推导: 1. 有6个不同数字 - (0个重复数字: 111111): $$p(6) C_{10}^6 * 6! \div 10^6$$ 2. 有5个不同数字 - (某个数字重复了2次: 11112): $$p(5) (\frac{C_{10}^…

张小明 2025/12/25 22:26:43 网站建设

做哪种网站能赚到钱wordpress 分类标题

精通WorkshopDL:解锁Steam创意工坊模组的实用技巧 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为Epic、GOG平台购买的游戏无法使用Steam创意工坊模组而烦恼吗…

张小明 2025/12/25 22:26:42 网站建设

做株洲网站需要多少钱越南注册公司全攻略

https://blog.csdn.net/weixin_45655710?typeblog浙大疏锦行 DAY 27 函数专题2:装饰器 ps: 第一期day27对应5月16日 知识点回顾: 1.装饰器的思想:进一步复用 2.函数的装饰器写法 3.注意内部函数的返回值 作业: 编写一个装饰器logger&#x…

张小明 2025/12/25 22:26:44 网站建设