`

Spring之bean注入方式

阅读更多

   关于bean的注入方法,spring提供了三种方法:

   1.构造函数注入

   2.setter注入

   3.方法注入(省略)

   在一般情况下使用前两种方式。基于构造器的DI通过调用带参数的构造器来实现,每个参数代表一个依赖。此外还可以通过给stiatic工厂方法传参数来构造bean。

   对应的Class代码:

  public class LayerData  

{

  private YYHYGenericData dataService;

  private List<Object> RecordList = new ArrayList<Object>();

  public List<Object> getRecordList() 

 {

return RecordList;

 }

  public LayerData(String LayerName,YYHYGenericData dbservice,String SQL )

  {

 this.dataService=dbservice;

 System.out.println("图层:"+LayerName+"开始加载缓存");

   RecordList= dataService.getAll( SQL);

 

  }

 

 

}

 

  对应的bean配置:

 

  <bean id="outcrop"

 class="com.yyhy.Webgis.WFSLayer.LayerData">

<constructor-arg index="0">

<value>outcrop</value>

</constructor-arg>

<constructor-arg index="1">

<ref bean="YYHYGenericData"/>

</constructor-arg>

<constructor-arg index="2">

<value>select id,name,objlevel,objtype,the_geom,fontangle,fontcolor,fonttransparence,objdataprecision,fontsize,centerpoint_51000 as centerpoint,enddate,begindate,fillsymbolstyle,filltransparence,wkt_51000  as WKT from outcrop where wkt_51000 is not null</value>

</constructor-arg>

</bean>

 

  这种方式是直接通过传入构造函数参数值的方式注入的,多个参数之间通过 index属性进行区别。

 

     <bean id="YyhytablesnamedicDAOBean"

 class="com.yyhy.Baseclass.db.YYHYGenericManagerImpl">

<constructor-arg>

<bean class="com.yyhy.Baseclass.db.YYHYGenericDaoHibernate">

<constructor-arg value="com.yyhy.hx.tablesinformation.Yyhytablesnamedic"/>

<property name="sessionFactory"

 ref="sessionFactory"/>

     </bean>

     这是一个嵌套配置构造函数的bean,类YYHYGenericManagerImpl的构造函数参数是bean对象,而这个bean对象所对应的class的构造函数则需要一个bean 的reference来注入。

 

     setter注入方式:

     <bean id="YyhytablesnamedicDAOBean"

 class="com.yyhy.Baseclass.db.YYHYGenericManagerImpl">

         <property name="*DAO" 

                   ref="BeanDAO">

    </bean>  

    其中的seeter注入可是value的值类型,也可以是上面的引用类型。

 

    是构造函数注入还是setter注入?

    由于大量的构造器函数可能使程序变得笨拙,特别是当某些属性是可选的时候,因此通常情况下,提倡使用setter注入。而且setter DI在以后的某个时候还可以重新实例配置。

分享到:
评论

相关推荐

    Spring定义bean的三种方式和自动注入

    这种方式需要Bean有对应的setter方法,以便Spring进行依赖注入。 ```xml &lt;bean id="student" class="test.Student"&gt; 张三"/&gt; &lt;/bean&gt; &lt;bean id="teacher" class="test.Teacher"&gt; 李四"/&gt; &lt;/bean&gt; ``` 2....

    java巩固练习Spring 的bean注入方式有几种demo例子

    首先,我们来了解Spring中的bean注入主要有以下四种方式: 1. **设值注入(Setter Injection)**:这是最常见的一种注入方式,通过setter方法来设置bean的属性。在XML配置文件中,我们可以通过`&lt;property&gt;`标签来...

    关于spring boot中几种注入方法的一些个人看法

    @Autowired 是 Spring 中最常用的注入方法之一,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。@Autowired 的工作原理是,在启动 Spring IoC 时,容器自动装载了一个 ...

    spring依赖注入bean

    Spring 框架的核心特性之一就是依赖注入(Dependency Injection,简称 DI),这是一种设计模式,它允许我们控制组件之间的耦合,而不是让组件自行创建它们所依赖的对象。这有助于提高代码的可测试性、可维护性和灵活...

    Spring (bean怎样注入值)学习实例

    在Spring框架中,Bean的注入是其核心特性之一,它允许开发者通过声明式的方式管理对象的依赖关系。本文将深入探讨如何在Spring中通过XML配置文件对Bean进行值的注入,包括List、Set和Map等集合类型的注入。 首先,...

    Spring三种注入方式(三)

    除了以上三种方式,Spring还提供了基于注解的元数据注入,如`@Resource`、`@Qualifier`等,以及XML配置文件中的`&lt;bean&gt;`标签等方式进行依赖注入。在实际开发中,可以根据需求选择合适的方式,通常推荐使用构造器注入...

    通过@Autowired注解注入bean的顺序,以及@bean注入.rar

    1. **类型匹配**:Spring首先尝试按类型匹配bean,找到最适合的bean注入到目标字段或构造函数。 2. **按名称匹配**:如果存在多个相同类型的bean,Spring会检查目标字段或构造函数是否有`@Qualifier`注解,如果有,...

    spring bean XML配置入门

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

    day38 17-Spring的Bean的属性注入:注解方式

    在Spring框架中,Bean的属性注入是核心功能之一,它允许开发者在不编写代码的情况下配置对象的依赖关系。本文将详细讲解使用注解方式进行Bean属性注入的方法,以及相关的源码和工具应用。 首先,让我们了解Spring中...

    详解Spring 中如何控制2个bean中的初始化顺序

    Spring 中控制 2 个 bean 的初始化顺序 在 Spring 框架中,控制多个 bean 的初始化顺序是一个常见的问题。本篇文章将详细介绍如何控制 2 个 bean 的初始化顺序,提供了多种实现方式,并分析了每种方式的优缺。 ...

    Spring Bean创建初始化流程.docx

    在`doCreateBean()`方法中,Spring会创建Bean的实例,`createBeanInstance(beanName, mbd, args)`执行Bean实例的创建,而`populateBean(beanName, mbd, instanceWrapper)`则负责填充Bean的属性,将依赖注入到Bean中...

    Spring三种注入方式(一)

    本篇主要介绍Spring中的三种注入方式,包括构造器注入、设值注入和接口注入。 首先,我们来看构造器注入。构造器注入是在创建对象时,通过构造器传递依赖对象。这种方式强制了对象在创建时就必须提供所有必要的依赖...

    Spring的Bean配置

    综上所述,Spring的Bean配置是其核心机制之一,它涉及到IoC和DI原则的应用,以及多种配置方式的选择,如XML、注解和Java配置。理解并熟练掌握这些概念和实践,对于有效管理Java应用的复杂性至关重要。在实际项目中,...

    Spring三种注入方式(二)

    在这里,`userService` bean的`userDao`属性通过`setter`方法被`userDao` bean注入。`name`属性对应于setter方法参数的字段名,`ref`属性引用了需要注入的bean的ID。 ### 二、setter注入的优点与缺点 **优点:** 1...

    Quartz注入Spring的Bean

    3. **Spring注入Bean到Job**:在Job执行时,我们可以直接注入其他由Spring管理的Bean,无需在Job中创建这些对象,从而减少了代码的复杂性,增强了可重用性。 4. **JobFactory的自定义**:Quartz默认使用...

    spring bean的生命周期

    - **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...

    spring的注入方式

    在`spring_test`项目中,你可能会发现各种注入方式的示例代码,包括如何在Spring配置文件中定义bean,以及如何在Java类中使用这些注入方式来管理依赖。通过实践和理解这些例子,你可以更好地掌握Spring的依赖注入...

    Spring bean 动态注册,jar包热替换

    Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...

    day38 12-Spring的Bean的属性的注入:名称空间p

    在Spring框架中,Bean的属性注入是核心功能之一,它允许我们通过配置文件或注解来设置Bean实例的属性值,使得对象的初始化更加灵活。本文将深入探讨Spring中的"名称空间p",这是一种用于配置Bean属性注入的方式,...

Global site tag (gtag.js) - Google Analytics