`
moshowgame
  • 浏览: 42931 次
  • 性别: Icon_minigender_1
  • 来自: 潮州
社区版块
存档分类
最新评论

spring的setter注入和构造注入(XML讲解以及常见错误)

阅读更多

 

依赖注入(DI)背后的基本原理是对象之间的依赖关系(即一起工作的其它对象)。因此,容器的工作就是创建bean时注入那些依赖关系。相对于由bean自己来控制其实例化、直接在构造器中指定依赖关系或者类似服务定位器(Service Locator)模式这3种自主控制依赖关系注入的方法来说,控制从根本上发生了倒转,这也正是控制反转(Inversion of Control, IoC) 名字的由来。 

setter注入是spring根据配置文件自动完成的,你不需要在程序中显示的调用,因此代码没有与spring框架直接耦合。

而通过getBean方法则首先意味着你必须获取到BeanFactory或ApplicationContext,这种方式叫依赖查找,代码了解框架的存在,耦合度较高。

应用DI原则后,代码将更加清晰。而且当bean自己不再担心对象之间的依赖关系(甚至不知道依赖在哪里定义和依赖的实际类)之后,实现更高层次的松耦合将易如反掌。DI有三种注入方式,即Setter注入(*.这个是最重要和最主要的,企业用的最多且最灵活的)、构造器注入和接口注入。

 

项目源码是接http://moshowgame.iteye.com/admin/blogs/1605087的。但是只有一个地方改了(就是UserService里面加了个默认构造函数),但是总体结构没变。这里只讲解XML,前面的model、DAO、DAO.impl和service就不再重复说了。

 

 

*。在bean.xml配置setter注入和constructor注入

 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

 

  <bean id="userDAOImpl" class="com.bjsxt.dao.impl.UserDAOImpl">

  </bean>

  <bean id="userService" class="com.bjsxt.service.UserService">

  

    <!-- setter设置注入就是调用setXXX方法,但是需要保留默认构造方法-->

<!--

<property name="userDAO" ref="userDAOImpl" />

-->

     <!-- constructor构造注入调用的是构造方法-->

<!--

    <constructor-arg index="0">

        <ref bean="userDAOImpl"/>

    </constructor-arg>

-->

  

  </bean>

</beans>

 

 

*。上面两种方法写在一起了,要用的方法请取消掉<!-- -->的注释,然后将另外的方法用<!-- -->注释掉。

 

 

*。注入的思路。等于就是说从UserDAOImplnew一个UserDAO的实例userDAO,然后注入到UserService里面的setterconstructor里面。spring的方式讲就是参考bean获得实例然后注入到目标bean里面去,即是要用到两个bean

 

 

*。常见错误1。用setter设置注入需要保留默认构造方法,不然会报错,我就是这样错了一个下午,问大神才知道的。

public UserService() {}

constructor构造注入需要重写构造方法并且带参数 public UserService(UserDAO userDAO) {

super();

this.userDAO = userDAO;

}

*。常见错误2。<property name="userDAO"..这里的userDAO名字要和public UserService(UserDAO userDAO)的userDAO一致,才能确认不会注入错,下午也因为这个错了。

 

*。很多东西刚开始觉得很难,学过了之后、练过了之后、错过了之后才明白,其实很简单。

 

 

 

⊙_⊙最后,按照我的惯例,附上本次的项目源码,类库用到三个(spring.jar  junit.jar(eclipse自带) commons-logging.jar)。

^_^还有什么好方法或者疑问和意见欢迎大家提出来一起讨论!

 

2
5
分享到:
评论

相关推荐

    spring setter 和构造 注入 例子 spring 4.2.0

    总结来说,Spring的setter和构造注入是实现依赖注入的关键技术,它们提供了灵活且强大的方式来管理对象间的依赖关系,从而提高代码的可维护性和测试性。在实际项目中,开发者可以根据需求和场景选择合适的注入方式。

    Java开发学习(六)----DI依赖注入之setter及构造器注入解析.doc

    Spring 框架基于这些知识点,为我们提供了两种注入方式:setter 注入和构造器注入。 二、setter 注入 setter 注入是指通过 setter 方法将依赖对象注入到 Bean 中。例如,在 BookServiceImpl 中定义了引用类型属性 ...

    Spring之Construcotrer注入和setter注入不同的XML写法方式

    Spring之Construcotrer注入和setter注入不同的XML写法方式 ,具体效果和过程看博文http://blog.csdn.net/evankaka/article/details/44878225

    Spring设值注入和构造注入(通过xml).zip

    本资料主要关注两种注入方式:设值注入(Setter Injection)和构造注入(Constructor Injection),并通过XML配置文件进行管理。 设值注入是通过setter方法来注入依赖的。首先,我们需要在类中声明需要注入的属性,...

    spring的setter注入实现mysql数据库的连接

    在Spring框架中,setter注入是一种常见的依赖注入方式,它允许我们通过setter方法来设置对象的属性,从而实现组件之间的解耦。本篇文章将详细讲解如何使用setter注入来实现与MySQL数据库的连接。 首先,我们需要...

    Spring依赖注入使用setter设注入demo

    在实际开发中,开发者可以根据需求选择使用setter注入、构造函数注入或者字段注入。setter注入的灵活性在于可以在不改变对象实例的情况下,动态地调整其依赖,这对于测试和维护来说非常方便。同时,它也鼓励了接口...

    Spring - -setter方式 向bean中注入各种类型的值

    9. **工具使用**:"工具"标签可能暗示博主分享了一些有助于理解和调试setter注入的工具或技巧,比如使用Spring的BeanDefinitionViewer,或者IDE中的调试功能。 综上所述,这篇博客可能涵盖了Spring中setter注入的...

    spring介绍(set和构造器注入)

    标题中的“spring介绍(set和构造器注入)”是指在Spring框架中两种主要的依赖注入(Dependency Injection,简称DI)方式:setter注入和构造器注入。在Spring框架中,DI是一种核心特性,它允许我们解耦组件之间的关系...

    JavaEE搭建Spring环境,完成设置注入和构造注入

    本教程将指导你如何搭建Spring环境,并实现设置注入和构造注入。 首先,让我们理解什么是Spring框架。Spring是一个开源的Java平台,主要用于构建企业级应用。它提供了全面的编程和配置模型,极大地简化了JavaEE应用...

    Spring_0200_IOC_Introduction setter注入

    本篇将重点讲解Spring中的IOC,特别是setter注入的原理和使用。 **IOC原理** IOC的核心思想是将对象的创建和管理交给一个专门的容器,即Spring的IOC容器。在传统的编程中,我们通常手动创建对象并管理它们之间的...

    Spring的注入方式详解

    下面我们将详细探讨Spring 中的三种注入方式:接口依赖注入(Type1)、setter/getter 注入(Type2,也称为属性注入)和构造方法注入(Type3)。 1. **接口依赖注入(Type1)** 这种注入方式相对不常见,主要适用于...

    spring的注入方式

    Spring提供了多种注入方式,包括set注入、构造注入和自动注入,让我们逐一深入探讨。 1. **Set注入** Set注入是最常见的注入方式,它通过setter方法来设置对象的依赖。首先,你需要在类中声明需要注入的属性,并...

    spring_xml.zip

    本篇文章将深入探讨Spring框架中的setter注入,以及如何通过XML配置文件进行相关设置。 首先,我们要理解什么是依赖注入(Dependency Injection,简称DI)。在面向对象编程中,对象之间存在依赖关系,依赖注入就是...

    spring依赖注入

    在Spring中,依赖注入主要有三种方式:构造器注入、setter注入和接口注入。构造器注入是在对象实例化时通过构造函数传入依赖;setter注入则是通过调用对象的setter方法来设置依赖;接口注入则相对较少使用,它通过...

    spring依赖注入底层详解

    在Spring中,依赖注入可以通过构造器注入、设值注入和接口注入三种方式实现。 1. 构造器注入:通过在类的构造函数中传递依赖对象来完成注入。这种方式在创建对象时就确保了所有依赖都已就绪,适合于对象的依赖关系...

    Spring注入的方式

    本文将详细探讨Spring中的两种主要注入方式:构造器注入和setter注入,以及它们各自的特点和适用场景。 首先,让我们理解什么是依赖注入(Dependency Injection,简称DI)。在传统的编程模式中,一个类通常会直接...

    面试官常问的spring依赖注入和bean的装配问题.pdf

    显式装配是指在Spring配置文件中明确指定如何注入依赖,包括setter注入和构造器注入,这种方式虽然配置繁琐,但清晰明了,易于管理和维护。在Spring Boot中,尽管自动化配置十分便捷,但仍然可以通过@Primary、@...

    spring bean XML配置入门

    Spring支持通过属性值、构造器参数、setter方法等多种方式进行注入。 6. **运行环境与构建工具**: 题目描述中提到的运行环境是Eclipse,这是一个流行的Java集成开发环境,提供了便捷的代码编辑、调试等功能。而...

    Spring依赖注入检查.

    Spring框架提供了两种主要的DI方式:构造器注入和setter注入。 1. **构造器注入**: 当类需要依赖其他对象时,Spring可以通过构造函数传递这些依赖。这样,每次创建类的新实例时,依赖项都会自动设置。例如: ``...

Global site tag (gtag.js) - Google Analytics