Spring4 自动装配;方法注入

通过配置defalut—zutowire属性,Spring IOC容器可以自动为程序注入Bean;默认是no(不启用自动装配)。

default—autowire的类型有:

byName:通过名称自动进行匹配

byType:通过属性自动进行匹配

示例如下:

一个实体类people

beans.xml配置:

<?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.xsd"
        default-autowire="byName">
        <!-- byName通过属性名、byType通过类型只要类型与属性类型相同就可以自动装配,当然如果有多个同类型的就会报错啦 -->

    <bean id="dog" class="com.maya.model.Dog">
        <property name="name" value="jack"></property>
    </bean>
    <bean id="dog1" class="com.maya.model.Dog">
        <property name="name" value="tom"></property>
    </bean>
    <!-- 在这里不需要,手动进行注入bean,因为people中的属性名师dog,那么它会自动装配id是dog的类 -->
    <bean id="people1" class="com.maya.model.People">
        <property name="id" value="1"></property>
        <property name="name" value="小明"></property>
        <property name="age" value="15"></property>
    </bean>
</beans>

建议:自动装配机制慎用,它屏蔽了装配细节,容易产生潜在的错误;

方法注入:

Spring 管理的bean的作用域默认是单例的singleton; 但是可以通过配置prototype,实现多例;

那么就需要用到方法注入:lookup-method

如果我想让Spring管理的bean在我每次调用的时候都是新的,那么就需要如下配置(但是这样做的前提条件是:我没有手动将这条狗注入到people中)

如果将dog手动注入到了people中的话,这样做是无法改变其单例的模式,依然会是同一条狗,

时间: 2024-11-03 08:17:55

Spring4 自动装配;方法注入的相关文章

Spring的自动装配在session监听器失效

先看代码 package com.oa.listener; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import org.springframework.beans.factory.annotation.Autowired; import com.oa.service.Syste

Spring - bean的autowire属性(自动装配)

当我们要往一个bean的某个属性里注入另外一个bean,我们会使用<property> + <ref/>标签的形式.但是对于大型项目,假设有一个bean A被多个bean引用注入,如果A的id因为某种原因修改了,那么所有引用了A的bean的<ref/>标签内容都得修改,这时候如果使用autowire="byType",那么引用了A的bean就完全不用修改了.autowire到底都什么用?我们继续往下看. autowire的用法: <bean i

Spring bean的自动装配属性

bean的自动装配属性能简化xml文件配置. bean 的自动装配属性分为四种: 1.byName 2.byTyoe 3.constructor 4. autodetect byName: 它查找配置文件中的的bean的id 或者name 和本bean中的成员属性名相同的bean 自动装配 所以不用再给本bean添加peoperty标签 例:有两个类 public Class  Person{ } public Class Customer{ private Person p; public s

spring框架学习(四)自动装配

spring框架学习(四)自动装配 set注入和构造注入有时在做配置时比较麻烦.所以框架为了提高开发效率,提供自动装配功能,简化配置.Spring框架式默认不支持自动装配的,要想使用自动装配需要修改spring配置文件中<bean>标签的autowire属性 自动装配属性有6个值可选,分别代表不同的含义. 1,byName 从Spring环境中获取目标对象时,目标对象中的属性会根据名称在整个Spring环境中查找<bean>标签的id属性值.如果有相同的,那么获取这个对象,实现关联

4.AutowireCapableBeanFactory 自动装配工厂

AutowireCapableBeanFactory 根据名称:自动装配的BeanFactory,其实也是对BeanFactory的增强 源代码: /* * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in complian

AutowireCapableBeanFactory 根据名称:自动装配的BeanFactory,其实也是对BeanFactory的增强

//自动装配的Bean 工厂 public interface AutowireCapableBeanFactory extends BeanFactory { //工厂没有自动装配的Bean int AUTOWIRE_NO = 0; //根据名称自动装配的Bean int AUTOWIRE_BY_NAME = 1; //表明根据类型自动装配 int AUTOWIRE_BY_TYPE = 2; //根据构造方法快速装配的Bean int AUTOWIRE_CONSTRUCTOR = 3; //B

Spring 自动装配;方法注入

通过配置defalut-autowire属性,Spring IOC容器可以自动为程序注入Bean:默认是no(不启用自动装配). default-autowire的类型有: byName:通过名称自动进行匹配 byType:通过属性自动进行匹配 示例如下: 一个实体类people public class People{ private int id; private String name; private int age; private Dog dog; } beans.xml配置: <?

Spring(二)scope、集合注入、自动装配、生命周期

原文链接:http://www.orlion.ga/189/ 一.scope bean的scope属性中常用的有两种:singleton(单例,默认)和prototype(原型,每次创建新对象) 例:beans.xml <bean id="userService" class="ml.orlion.service.UserService" scope="prototype">     <property name="u

Spring 入门教程(三) 注入和自动装配

     Spring注入是指在启动Spring容器加载bean配置的时候,对类变量的赋值. 两种常用注入方式:设值注入和构造注入 下面就这部分知识看代码以及代码中的注解: 1.首先看Spring 配置文件(如何加载,怎么测试,<入门系列(一)>有说明,这里不再赘述) <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.