Spring依赖注入
【摘要】 目录依赖注入概念将UserDao注入到UserService内部的方式set注入方法改进 有参构造注入方法Bean的依赖注入的数据类型集合的数据类型注入 引入其他配置文件(分模块开发)Spring的重点配置依赖注入概念上面的缺点也很明显,是同时获取service和dao层的到时我们只想要service层,所以此时,需要依赖注入,把dao注入到service服务层依赖注入(Dependenc...
目录
依赖注入概念
上面的缺点也很明显,是同时获取service和dao层的到时我们只想要service层,所以此时,需要依赖注入,把dao注入到service服务层
依赖注入(DependencyInjection):它是Spring框架核心IOC的具体实现。
在编写程序时,通过控制反转,把对象的创建交给了Spring,但是代码中不可能出现没有依赖的情况。 IOC解耦只是降低他们的依赖关系,但不会消除。例如:业务层仍会调用持久层的方法。
那这种业务层(Service)和持久层(Dao)的依赖关系,在使用Spring之后,就让Spring来维护了。简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。
将UserDao注入到UserService内部的方式
构造方法和set方法
法1:set方法
在UserServiceImpl下创建userDao
在applicationContext.xml文件中配置
然后之前创建的UserController就可以启动了
如果直接new UserServiceImpl对象会报空指针异常的错,
因为useDao是不是通过spring容器来获取的,自然就是null值了
set注入方法改进
P命名空间注入本质也是set方法注入,但比起上述的set方法更加方便,首先需要引入p命名空间:
修改注入方式
是一个对象就用-ref,普通属性就不用
userController运行之后
有参构造注入方法
在applicationContext.xml文件中
userServiceImpl下
运行结果:
Bean的依赖注入的数据类型
上面的操作,都是注入引用Bean,除了对象的引用可以注入,普通数据类型,集合都可以在容器中进行注入。
注入数据的三种数据类型
- 普通数据类型
- 引用数据类型
- 集合数据类型
普通数据注入,如在UserDao层注入两个普通数据类型(采用set方式注入)
在applicationContext.xml文件中,在配置dao中设置参数
在Usercontroller下
运行结果
集合的数据类型注入
在UserDaoImpl下
采用set注入方式,设置集合,提供对应得set方法
在applicationContext.xml下配置注入值
在UserController测试下
运行结果:
引入其他配置文件(分模块开发)
实际开发中,Spring的配置内容非常的多,这就导致Spring配置很繁琐且体积很大,所以可以将部分配置拆解到其他配置文件中,而且主配置文件通过import标签进行加载
语法格式:
Spring的重点配置
<bean>标签
- id属性:在容器中Bean实例的唯一标识,不允许重复
- class属性:要实例化的Bean的全限定名
- scope属性:bean的作用范围,常用是Singleton(默认)和prototype
<property>标签:属性注入
- name属性:属性名称
- value属性:注入的普通属性值
- ref属性:注入的对象引用值
<list>标签
<map>标签
<constructor-arg>标签
<import>标签:导入其他的Spring的分文件
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)