江西医疗网站备案前置审批网络营销师就业前景
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:37
当前位置: 首页 > news >正文
江西医疗网站备案前置审批,网络营销师就业前景,新冠数据实时更新,企业的官网前言 本篇博客讲详细介绍Spring框架中的两个最核心且最基础的概念#xff1a;控制反转#xff08;IOC#xff09;和面向切面编程#xff08;AOP#xff09;。以及如何通过IDEA来构建一个Spring项目#xff0c;通过实战和理论结合的方式来让大家真的学会Spring这个最流行的…前言 本篇博客讲详细介绍Spring框架中的两个最核心且最基础的概念控制反转IOC和面向切面编程AOP。以及如何通过IDEA来构建一个Spring项目通过实战和理论结合的方式来让大家真的学会Spring这个最流行的Java框架。 一、认识Spring是什么
- Spring框架的概述 Spring是一个开放源代码的设计层面框架它解决的是业务逻辑层和其他各层的松耦合问题因此它将面向接口的编程思想贯穿整个系统应用。简单来说Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。 它是为了解决企业应用开发的复杂性而创建的。 Spring的核心是控制反转IOC和面向切面AOP IOC:控制反转将创建对象的过程交给spring进行管理.AOP:面向切面在不修改源代码的情况之下进行代码功能的增强.
- Spring框架的优点 方便解耦简化开发Spring就像一个大工厂将所有对象的创建和依赖关系维护交给Spring管理这也是IOC的作用。AOP编程的支持Spring提供面向切面编程可以方便的实现对程序进行权限拦截、运行监控等功能。声明式事务的支持只需要通过配置就可以完成对事务的管理而无需手动编程。方便程序的测试Spring支持Junit4可以通过注解方便的测试Spring程序。方便集成各种优秀框架Spring不排斥各种优秀的开源框架其内部提供了对各种优秀框架如Struts2、Hibernate、MyBatis等的直接支持。降低JavaEE API的使用难度Spring 对JavaEE开发中非常难用的一些APIJDBC、JavaMail等都提供了封装使这些API应用难度大大降低。 二、Spring项目的创建 如今IDEA比较主流下面我来演示如何使用IDEA来创建一个Spring项目。
- 首先我们创建一个Maven工程 不知道如何创建Maven工程的小伙伴请参考我的这篇博客 Maven学习—如何在IDEA中配置Maven又如何创建Maven工程(详细攻略)_idea创建maven项目-CSDN博客 2. 引入Spring相关的依赖坐标 Spring框架基础依赖: dependencies !– Spring框架基础依赖 –dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.0.2.RELEASE/version/dependencydependencygroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactIdversion1.2/version/dependency!– 日志 –dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.12/version/dependency!– 单元测试 –dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency/dependenciesAOP面相切面编程的依赖: !– AOP面相切面编程的依赖 –!–AOP联盟–dependencygroupIdaopalliance/groupIdartifactIdaopalliance/artifactIdversion1.0/version/dependency!–Spring Aspects–dependencygroupIdorg.springframework/groupIdartifactIdspring-aspects/artifactIdversion5.0.2.RELEASE/version/dependency!–aspectj–dependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactIdversion1.8.3/version/dependency
- 创建Spring核心的配置文件
在resources目录下创建applicationContext.xml的配置文件名称是可以任意的但是通常都使用默认名称。 给文件中的默认内容有的小伙伴创建完可能是空的我这里给出文件默认代码
?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://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 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd/beans 以上内容就是一个最基础的Spring项目的创建方法。 三、Spring IOC容器 - 什么是IOC IOC Inverse of Control控制反转将对象的创建权力交给给Spring框架去管理实现控制权的反转。
- IOC实现的底层原理 IOC的实现依赖于以下3种技术 ① dom4j解析xml文档② Java对象的一种创建方式工厂模式③ 采用Java中反射技术来创建对象 想要了解对底层原理深入了解的小伙伴可以去Spring官网下载Spring底层源码。 Spring官方网站 Spring | HomeLevel up your Java code and explore what Spring can do for you.https://spring.io/ ioc底层有用到反射面试时如果可以扯一扯Java基础反射相关的东西 3、IOC的具体使用 常规情况下类A中使用类C示意图 当有了IoC/DI的容器后A类不再主动去创建C了 而是被动等待等待IoC/DI的容器获取一个C的实例然后反向的注入到A类中如下图所示 有IoC/DI容器后程序结构示意图 控制反转IOC是从容器的角度出发既容器控制应用程序由容器反向的向应用程序注入其所需要的外部资源。 依赖注入DI是从应用程序的角度在描述既应用程序依赖容器创建并注入它所需要的外部资源 根据上面的讲述应该能看出来DI和IOC是对同一件事情的不同描述从某个方面讲他们就是同一概念只是描述的角度不同。 当然对于我们初学者我们首先去掌握spring IOC的使用方法即可下面我来用基础代码为大家演示Spring的控制反转和依赖注入两大设计理念的含义 代码演示 1通过IOC来创建Java类 ①首先我先定义几个普通的Java类: Teacher类 User类 通常情况下我们若想要去创建这两个类的对象的话会像下面这样 使用最普通New的方式使用反射的方式创建对象 public void createObjTest01() throws ClassNotFoundException {//1.使用最普通new的方式User user new User();//2.使用反射的方式创建对象(需要在方法上抛出“找不到类”的异常)Class clazz Class.forName(com.yzx.pojo.User);} ②但如果我们使用了Spring我们创建对象的方式将发生改变演示如下 首先在Spring的xml配置文件中进行bean注入 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://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 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsdbean iduser classcom.yzx.pojo.User/beanbean idTeacher classcom.yzx.pojo.Teacher/bean/beans id 后面是你自定义该类的别名class 后面是你要托管给Spring管理的类的全路径 然后我们在test目录下创建一个测试类来验证Spring是否已经可以管理这两个类。 测试类中的测试方法内容如下 Testpublic void createObjTest02() throws ClassNotFoundException {//1.首先加Spring的载配置文件ApplicationContext ac new ClassPathXmlApplicationContext(applicationContext.xml);//2.然后通过ApplicationContext的对象来获取所需对象User user (User)ac.getBean(user);Teacher teacher (Teacher)ac.getBean(teacher);usr.test();teacher.test();} 运行结果 2通过IOC向类注入属性值 首先我们在Spring配置文件中为对象注入属性值 方法一使用property标签来实现对属性的注入 1.使用property标签来实现对属性的注入使用该标签进行属性注入时要求pojo类中必须配有setter方法因此该方法通常叫做使用setter方法注入2.标签属性 name:类中的属性名称 value:向属性注入的值 ref对象映射 代码如下 bean id usr classcom.yzx.pojo.User!– ①配置基本类型的属性值 –property nameid value1/property nameusername valueadmin/property namepassword value123/!– ②配置数组类型的属性值 –property namestrsarrayvalueadmin/valuevalue张三/valuevalue李四/value/array/property!– ③配置List集合类型的属性值 –property namelistlistvalue熊大/valuevalue熊二/value/list/property!– ④配置map集合类型的属性值 –property namemapmapentry keyaaa value小白/entry keybbb value小黑//map/property/bean 方法二使用property标签来实现对属性的注入 1.使用constructor-arg标签来实现对属性的注入使用该标签进行属性注入时要求pojo类中必须配有构造器因此该方法通常也叫做利用类的构造器注入。2.标签属性 name:类中的属性名称 value:向属性注入的值 ref对象映射 bean idteacher classcom.yzx.pojo.Teacher!– ①配置基本类型的属性值 –constructor-arg nameid value1/constructor-arg nametname value李老师/!– ②配置数组类型的属性值 –constructor-arg namenumsarrayvalue1/valuevalue2/valuevalue3/valuevalue4/value/array/constructor-arg!– ③配置List集合类型的属性值 –constructor-arg namelistlistvalue你好/valuevaluespring/value/list/constructor-arg!– ④配置map集合类型的属性值 –constructor-arg namemapmapentry key张三 value12/entry key李四 value15//map/constructor-arg/bean 测试代码 Testpublic void createObjTest02() throws ClassNotFoundException {//1.首先加Spring的载配置文件ApplicationContext ac new ClassPathXmlApplicationContext(applicationContext.xml);//2.然后通过ApplicationContext的对象来获取所需对象User user (User)ac.getBean(usr);Teacher teacher (Teacher)ac.getBean(teacher);System.out.println(user.toString());System.out.println(teacher.toString());} 运行结果 小结 通过上述演示相信大家对Spring框架中IOC和DI的概念有了基础的认识 其实IoC/DI对编程带来的最大改变不是从代码上而是从思想上发生了“主从换位”的变化。应用程序原本具有最大的主动权需要获取什么资源都是主动出击但是在IoC/DI思想中应用程序就变成被动的了被动的等待IoC/DI容器来创建并注入应用程序所需要的资源了。 这样一个改变其实是编程思想的一个大进步如此就可以有效的分离了对象和它所需要的外部资源使得代码的耦合度降低有利于代码复用更重要的是使得程序的整个体系结构变得非常灵活。 四、Spring AOP面向切面编程 由于篇幅有限AOP的具体内容请看小编下面的这篇博客 本文参考文献 控制反转IOC和依赖注入DI的区别详细 通俗易懂解释_控制反转和依赖注入的理解(通俗易懂)-CSDN博客
- 上一篇: 江西网站开发科技公司合肥seo优化外包公司
- 下一篇: 江西中慧城乡建设开发公司网站安装下载应用
相关文章
-
江西网站开发科技公司合肥seo优化外包公司
江西网站开发科技公司合肥seo优化外包公司
- 技术栈
- 2026年03月21日
-
江西网站开发的公司如何优化搜索引擎的准确性
江西网站开发的公司如何优化搜索引擎的准确性
- 技术栈
- 2026年03月21日
-
江西网站备案要求旅行社应做哪些网站
江西网站备案要求旅行社应做哪些网站
- 技术栈
- 2026年03月21日
-
江西中慧城乡建设开发公司网站安装下载应用
江西中慧城乡建设开发公司网站安装下载应用
- 技术栈
- 2026年03月21日
-
江西专业网站建设定制北京十大代理记账公司
江西专业网站建设定制北京十大代理记账公司
- 技术栈
- 2026年03月21日
-
江西宗杰建设工程有限公司网站有了域名怎样做淘客网站
江西宗杰建设工程有限公司网站有了域名怎样做淘客网站
- 技术栈
- 2026年03月21日
