spring之自动装配的三种方式

spring之自动装配的三种方式,第1张

概述springIOC容器可以自动装配Bean,需要做的仅仅是在<bean>中的autowire属性里指定自动装配的方式。 ByType:根据类型自动装配。若IOC容器中有多个目标Bean类型

springIOC容器可以自动装配Bean,需要做的仅仅是在<bean>中的autowire属性里指定自动装配的方式。

ByType:根据类型自动装配。若IOC容器中有多个目标Bean类型一致的bean,在这种情况下,spring将无法判定那个bean最适合该属性,所以不能执行自动装配。

Byname:根据名称自动装配,必须将目标Bean的名称和属性名设置完全相同。

contructor:通过构造器自动装配,当Bean中存在多个构造器时,此种自动装配方式将会很复杂,不推荐使用,

Car.java

package com.gong.spring.beans.autowire;public class Car {        public Car() {    }     Car(String name) {        this.name = name;    }    private String name;     String getname() {        return name;    }    voID setname(String name) {         name;    }    @OverrIDe     String toString() {        return "Car [name=" + name + "]";    }    }

Address.java

 Address {     String street;     String getStreet() {         street;    }     setStreet(String street) {        this.street = street;    }    @OverrIDe    return "Address [street=" + street + "]";    }    }

Student.java

 com.gong.spring.beans.autowire;import java.util.List; java.util.Map; Student {         String name;    private int age;    double score;     Car car;     Address address;     getAge() {         age;    }    voID setAge( age) {        this.age = getscore() {         score;    }    voID setscore( score) {        this.score = Car getCar() {         car;    }     setCar(Car car) {        this.car = Address getAddress() {         address;    }     setAddress(Address address) {        this.address = address;    }    @OverrIDe    return "Student [name=" + name + ",age=" + age + ",score=" + score + ",car=" + car + ",address=" + address                + "]";    }        }

beans-autowire.xml

<?xml version="1.0" enCoding="UTF-8"?><beans xmlns="@R_301_6822@://www.springframework.org/schema/beans"    xmlns:xsi="@R_301_6822@://www.w3.org/2001/XMLSchema-instance"    xmlns:p="@R_301_6822@://www.springframework.org/schema/p"    xsi:schemaLocation="@R_301_6822@://www.springframework.org/schema/beans @R_301_6822@://www.springframework.org/schema/beans/spring-beans.xsd">    <bean ID="car" class="com.gong.spring.beans.autowire.Car" p:name="baoma"></bean>    <bean ID="address" class="com.gong.spring.beans.autowire.Address" p:street="络南街道"></bean>    <bean ID="address2" class="com.gong.spring.beans.autowire.Address" p:street="珞狮街道"></bean>    <!--     <bean ID="student" class="com.gong.spring.beans.autowire.Student" p:name="tom"    p:age="12" p:score="99.00" p:address-ref="address" p:car-ref="car"></bean>     -->    <!-- 使用byname时,要装配的bean的名字要和类文件中的setter方法中的名字保持一致,若没有匹配的,则不装配     <bean ID="student"     p:age="12" p:score="99.00" autowire="byname"></bean>    -->    <!-- byType根据bean的类型和当前Bean的属性自动装配,若IOC容器中有一个以上的bean可以匹配,则会抛出异常 -->    <bean ID="student"     p:age="12" p:score="99.00" autowire="byname"></bean></beans>

Main.java

 org.springframework.context.ApplicationContext; org.springframework.context.support.ClasspathXmlApplicationContext; Main {    static  main(String[] args) {        //1.创建spring的IOC容器对象        ApplicationContext ctx = new ClasspathXmlApplicationContext("beans-autowire.xml");        2.从容器中获取Bean实例        Student student = (Student) ctx.getBean("student");         System.out.println(student.toString());    }}

XML配置里自动装配的缺点:

(1)自动装配将会装配Bean的所有属性,然而只需要装配个别属性时,自动装配就不够灵活;

(2)要么根据类型,要么根据名称自动装配,不能两者兼顾;

(3)一般而言,在实际项目中很少使用自动装配,因为与自动装配功能带来的好处相比,明确清晰的配置方式更有说服力;

总结

以上是内存溢出为你收集整理的spring之自动装配的三种方式全部内容,希望文章能够帮你解决spring之自动装配的三种方式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1226979.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存