热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spring依赖注入简介与xml配置

spring核心是依赖注入。本质就是通过配置xml文件或注解来自动生成你需要的对象,放在spring的大容器中。spring是一个独立的框架,既可以
spring核心是依赖注入。本质就是通过配置
xml文件
注解来自动生成你需要的对象,放在spring的大容器中。

spring是一个独立的框架,既可以用在java SE项目中,也可以用在 Web项目中。程序先创建bean容器,再调用bean容器的getBean()方法来获取Spring容器中的bean。
1.获得

1.1 spring 依赖



org.springframework
spring-context
4.3.2.RELEASE
会得到多个依赖的jar,见下图。





图1-1 spring的依赖jar

1.2 我的demo


简单的spring使用范例,项目地址:https://code.csdn.net/chuchus/springdemo/tree/master

2.生成bean
这里的bean类似于JavaBean,但范围要宽的很多。spring就像一个大容器,帮我们创建好对象后放入了它的容器。所有由它创建的对象,都叫bean。

bean的作用域:
singleton 每次调用getBean(),都返回同一个对象;
prototype 每次调用getBean(),都返回新的对象;
request 针对每次HTTP请求,Web应用中才有效。


2.1 BeanFactory


org.springframework.beans.factory.BeanFactory
接口。它是一个容器,spring生成的bean存放在它的实现类中。主要有下面几个方法。
Object org.springframework.beans.factory.BeanFactory.getBean(String name)


根据名字拿到bean对象。

T org.springframework.beans.factory.BeanFactory.getBean(String name, Class requiredType) 


getbean()的重载。

org.springframework.context.ApplicationContext


接口,,BeanFactory的子接口。

生成ApplicationContext的构造函数有:

FileSystemXmlApplicationContext 从当前项目位置算起,即src/目录的上层目录。
ClassPathXmlApplicationContext 从classes/开始算起。例子:

图2-1 bean配置文件的位置

ApplicationContext ctx =new ClassPathXmlApplicationContext("com/likeyichu/aop/beans.xml");




2.2 xml读properties配置


可以让spring读取我们的.properties文件。例子见下,注意用到的是org.springframework.beans.factory.config.PropertyPlaceholderConfigurer

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://115.28.88.166:3306/AliyunDB
jdbc.username=root3


占位









2.3初始化和销毁bean

当实例化一个bean时,可能需要执行一些初始化操作来确保该bean处于可用状态;同样地,当不再需要bean,将其从容器中移除时,我们还可能按顺序执行一些清除工作。此时我们需要init-method与destroy-method属性。

public class Stage{public void turnOnLight(){}public void turnOffLight(){}
}


2.4装配集合





3.注入bean
两种注入
设值注入:通过元素驱动spring执行setter方法。
构造注入:通过 元素驱动Spring执行带参数的构造函数。

需要在bean类中实现所有private字段的setter方法。下面是示例spring配置。








mdbcomm-daily




4.自动装配
为了简化xml配置,spring提供了四种自动装配机制。
byName:把与bean的属性同名的其他bean,自动装配到对应属性中;若找不到,不装配。
byType:把与bean的属性同类型的其他bean,自动装配到对应属性中;若找不到,不装配。
constructor :把与bean的构造函数形参同类型的其他bean,自动装配到对应属性中;若找不到,不装配。
autodetect:尝试constructor装配,若失败,采用byType装配。

5.高级xml特性








推荐阅读
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
author-avatar
一粒小小无名砂_741
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有