沟通交流类网站有哪些,广州小程序app定制开发,百度广告位价格,怎样建立微信公众号平台前言
在上篇文章#xff0c;我已经讲了Spring中最核心的知识点#xff1a;IoC#xff08;控制反转#xff09;以及DI#xff08;依赖注入#xff09;。这篇文章#xff0c;我将讲一下关于Spring框架中的其它比较琐碎但是又还是挺重要的知识点#xff0c;因此#xff…前言
在上篇文章我已经讲了Spring中最核心的知识点IoC控制反转以及DI依赖注入。这篇文章我将讲一下关于Spring框架中的其它比较琐碎但是又还是挺重要的知识点因此如果没有阅读过我上篇文章建议先看一下这会对阅读接下来的内容有着很好的帮助【IoC控制反转】看完必定强大立刻奏效-CSDN博客 1. 什么样的架构我们认为是一个优秀的架构
我认为是可维护性好可扩展性好的架构。
那什么叫可扩展性好呢
其实我的理解就是在不断添加新的代码的同时可以不修改原有代码。
那如何让程序维护性好可扩展性好呢
在Java业界是有一个公认的标准的高内聚低耦合。
高内聚就是尽量将代码写在与之功能描述一致的模块中。如User表的操作写在UserDAO里面不要写在非UserDAO的类里面。低耦合就是尽量减少类与类之间的直接关系。
什么是直接关系
Controller层依赖Service层在Controller层直接new Service层的类的对象。Service层依赖Dao层在Service层直接new Dao层的对象。
Spring框架就是通过IoC/DI控制反转/依赖注入实现程序的解耦。从而提高程序的维护性和扩展性。 2. Spring是什么这个框架到底有啥用
定义Spring是一个JavaEE轻量级的一站式开发框架。
JavaEE 就是用于开发企业级B/S应用的技术。
轻量级使用最少代码启动框架然后根据需求选择需要使用的模块。
一站式提供了表示层服务层持久层的所有支持。
我猜你不懂我在说什么因为这是定义比较晦涩所以我讲一下我自己对于Spring定义的理解吧。
什么是轻量级
就是除内核模块其他模块由开发者自由选择使用同时支持整合其他框架。也可以称为可插拔式开发框架像插头和插座一样插上就用不用就拔下来。这就是Spring框架核心理念。
什么是一站式
就是Spring框架提供涵盖了JavaEE开发的表示层服务层持久层的所有组件功能。也就是说原则上学完一套Spring框架不用其他框架就可以完成网站一条流程的开发。
Spring的所有组件如下图 总结一下Spring是一个JavaEE轻量级一站式开发框架。它提供的功能涵盖了JavaEE程序中的表示层服务层持久层功能组件。这意味着单单Spring框架就可以满足整个JavaEE程序的开发。但Spring框架更加强调的是它的轻量级模块的可插拔。也就是说除了内核模块其他功能模块如果你想使用可以不用并且Spring框架能够整合任何第三方的框架。在现实开发中Spring主要用于整合其他框架。 3. 为什么Spring可以实现模块的可插拔
Spring之所以可以实现模块的可插拔是支持依赖注入所谓的依赖注入就是不用new就可以创建对象。我来展示一下使用Spring框架不用new创建一个对象。
我举一个NBA的例子涉及球队(Team)和球员(Player)两个类并使用Spring框架来管理它们之间的关系。
1.创建一个普通类表示球队(Team)然后我们创建另一个普通的Java类表示球员(Player) 2. 创建一个Spring配置文件命名为applicationContext.xml,用于描述类与类之间的关系。 3. 创建ApplicationContext容器对象根据Spring配置文件的描述创建对象并放在Spring容器里面。
4. 使用ApplicationContext容器对象的getBean方法获取Spring容器里面的对象 4. XML管理Bean是啥东西
XML管理对象也称为XML管理Bean是一种将对象的配置信息存储在XML文件中并使用XML文件来创建和管理对象的方法。在这种模式下XML文件用于定义对象的属性和配置包括对象的类名、属性值、依赖关系等。XML文件可以被解析和读取然后根据其中的配置信息创建相应的对象并将对象的属性值设置为配置文件中指定的值。这种方式使得对象的创建和配置与代码的实现分离提供了更大的灵活性和可配置性。
当涉及到XML管理对象Bean时一个常见的例子是使用Spring Framework进行对象的配置和管理。我举一个例子展示一下如何使用XML配置文件来定义和创建对象
假设我们有一个名为Person的Java类代表一个人的信息包括姓名和年龄。我们将使用XML配置文件来管理Person对象。
首先我们创建一个名为beans.xml的XML配置文件内容如下 在上述XML配置文件中我们定义了一个名为person的Bean它的类是com.example.Person。我们使用property元素来设置对象的属性值这里设置了name属性为John Doeage属性为30。
接下来我们可以编写Java代码来读取和使用这个XML配置文件。假设我们有一个名为MainApp的类 在上述代码中我们使用Spring的ClassPathXmlApplicationContext类来加载XML配置文件并创建一个应用程序上下文。通过调用getBean()方法我们可以从上下文中获取配置的对象。在这个例子中我们获取了名为person的Bean并使用它的方法打印姓名和年龄。
运行这个示例代码它将读取beans.xml配置文件并创建一个Person对象输出姓名和年龄。
看到这里相信你已经理解了XML管理Bean是啥东西了。不过很遗憾的是XML管理对象的方式逐渐被更现代的配置和管理方式所取代如注解驱动的配置、Java配置类等。这些方式提供了更简单、更灵活和更强大的配置和管理功能例如Spring Framework中的注解配置和Java Config。所以这里我们只是了解一下大概是怎么回事儿就好不需要说刻意去记忆。 5. bean是什么如何实例化bean
当谈到Spring中的Bean时可以将其比喻为餐厅的菜单和菜品。
在一家餐厅中菜单是表示可供选择的菜品的列表而每道菜品则是一个具体的实例。类比到Spring中菜单可以看作是应用程序的配置文件或注解它列出了可用的Bean定义而每个具体的菜品则对应于由Spring容器实例化和管理的Bean。
在餐厅里菜单上的每道菜品都有自己的特点和属性例如名称、描述、价格等。类似地在Spring中每个Bean也有自己的属性和配置信息例如类名、依赖关系、作用域等。
当顾客在餐厅点菜时服务员会根据菜单上的信息来准备并提供相应的菜品。类似地在Spring中当应用程序启动时Spring容器会根据配置文件或注解中的信息来实例化和配置Bean并在需要时将它们提供给其他组件使用。
通过菜单顾客可以选择自己喜欢的菜品并根据自己的需求定制。类似地在Spring中开发人员可以根据应用程序的需求选择和配置自己需要的Bean以实现功能的定制和灵活性。
那如何实例化bean呢就像这样 反正你其实只要大概知道一下我们经常说的bean是什么看到类似这种代码知道是在干啥就好了。 6. 能否举一个依赖注入的例子
依赖注入有两种方法构造函数注入和利用setter实现。下面我举一个构造函数注入的例子。为什么不举用setter实现的例子呢因为我这篇文章只是让你简单了解一下依赖注入在代码中到底是怎么搞的让你在脑海里有个印象而且你不可能看了我一篇文章就直接可以徒手打出来吧哈哈。
例子如下
假设我们有一个NBA球队管理系统其中包含了以下几个关键组件Team球队、Coach教练和Player球员。
在没有依赖注入的情况下我们可能会在Team类中直接实例化Coach和Player并在需要时直接调用它们的方法。就像这样 在上述代码中Team类直接依赖于Coach和Player它在构造函数中创建了这两个对象的实例并使用它们。
然而这种直接实例化的方式存在一些问题。首先Team类与具体的Coach和Player类紧密耦合难以进行单元测试和替换。其次如果我们想在未来更改教练或球员的实例需要修改Team类的代码。
通过使用依赖注入我们就可以不修改Team的代码。我们可以将依赖的对象作为参数传递给Team类的构造函数或者通过setter方法注入。就像这样 现在Team类不再负责创建Coach和Player的实例而是通过构造函数接收它们作为参数。这样我们可以在应用程序的配置中注入具体的Coach和Player实例实现了依赖的解耦。
例如在Spring框架中我们可以使用XML配置文件或注解来配置依赖注入。在配置文件中我们可以指定具体的对象实例 7. 怎么理解注入集合对象
还是举一个例子
假设我们有一个NBA球队管理系统其中球队需要管理一组球员Players。我们希望通过依赖注入来将球员集合注入到球队对象中。
首先我们定义一个Player类表示球员 然后我们定义一个Team类表示球队它依赖于一个Player集合。我们可以使用构造函数注入或者属性注入来实现集合对象的注入。
1使用构造函数注入集合对象 在上述代码中Team类通过构造函数接收一个Player集合作为参数并将其赋值给类的属性。通过遍历集合对象我们可以依次调用每个球员的play()方法。
2使用属性注入集合对象 在上述代码中Team类提供了一个setter方法来接收Player集合对象并将其赋值给类的属性。通过调用setter方法我们可以将集合对象注入到Team类中。
无论是构造函数注入还是属性注入我们都可以在使用依赖注入框架如Spring时配置集合对象的注入。例如在Spring框架中我们可以使用XML配置文件或注解来配置集合对象的注入。
XML配置文件的示例 通过上述配置Spring容器会自动创建Player对象并注入到Team类的players属性中。 后记
对于SpringAOP编程以及Spring JDBC这两个知识点请看下篇文章
【面向切面编程AOP】从0开始学习Spring---AOP的相关知识2-CSDN博客