Setter办法输出

实体类Rumenz.java/Holder.java

package com.rumenz;public class Rumenz {    private Integer id;    private String name;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}package com.rumenz;public class Holder {    private Rumenz rumenz;    public Rumenz getRumenz() {        return rumenz;    }    public void setRumenz(Rumenz rumenz) {        this.rumenz = rumenz;    }}

手动输出形式

  • XML 资源配置元信息

配置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"       xmlns:util="http://www.springframework.org/schema/util"       xsi:schemaLocation="        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">    <bean id="rumenz" class="com.rumenz.Rumenz">        <property name="id" value="123"/>        <property name="name" value="入门小站"/>    </bean>    <bean id="holder" class="com.rumenz.Holder">        <property name="rumenz" ref="rumenz"/>    </bean></beans>

调用

package com.rumenz;public class DemoApplication {    public static void main(String[] args) {        DefaultListableBeanFactory db=new DefaultListableBeanFactory();        XmlBeanDefinitionReader xr=new XmlBeanDefinitionReader(db);        xr.loadBeanDefinitions("Beans.xml");        Holder bean = db.getBean(Holder.class);        System.out.println(bean.getRumenz().getName());    }}
  • Java 注解配置元信息

配置文件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"       xmlns:util="http://www.springframework.org/schema/util"       xsi:schemaLocation="        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">    <bean id="rumenz" class="com.rumenz.Rumenz">        <property name="id" value="123"/>        <property name="name" value="入门小站"/>    </bean></beans>

调用

package com.rumenz;import org.springframework.beans.factory.support.DefaultListableBeanFactory;import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.context.annotation.Bean;public class DemoApplication {    public static void main(String[] args) {        AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext();        XmlBeanDefinitionReader xr=new XmlBeanDefinitionReader(ac);        xr.loadBeanDefinitions("Beans.xml");        ac.register(DemoApplication.class);        ac.refresh();        Holder bean = ac.getBean(Holder.class);        System.out.println(bean.getRumenz().getName());        ac.close();    }    @Bean    public Holder holder(Rumenz rumenz){        Holder h=new Holder();        h.setRumenz(rumenz);        return h;    }}
  • API 配置元信息

配置文件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"       xmlns:util="http://www.springframework.org/schema/util"       xsi:schemaLocation="        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">    <bean id="rumenz" class="com.rumenz.Rumenz">        <property name="id" value="123"/>        <property name="name" value="入门小站"/>    </bean></beans>

调用

package com.rumenz;ramework.context.annotation.Bean;public class DemoApplication {    public static void main(String[] args) {        AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext();        BeanDefinition beanDefinition=createBeanDefinition();        ac.registerBeanDefinition("holder",beanDefinition);        XmlBeanDefinitionReader xr=new XmlBeanDefinitionReader(ac);        xr.loadBeanDefinitions("Beans.xml");        ac.register(DemoApplication.class);        ac.refresh();        Holder bean = ac.getBean(Holder.class);        System.out.println(bean.getRumenz().getName());        ac.close();    }    private static BeanDefinition createBeanDefinition() {        BeanDefinitionBuilder beanDefinitionBuilder=BeanDefinitionBuilder.genericBeanDefinition(Holder.class);        beanDefinitionBuilder.addPropertyReference("rumenz","rumenz");        return beanDefinitionBuilder.getBeanDefinition();    }}

主动模式注入

  • byType

配置文件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"       xmlns:util="http://www.springframework.org/schema/util"       xsi:schemaLocation="        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">    <bean id="rumenz" class="com.rumenz.Rumenz">        <property name="id" value="123"/>        <property name="name" value="入门小站"/>    </bean>    <bean id="holder" class="com.rumenz.Holder" autowire="byType">    </bean></beans>

调用

package com.rumenz;public class DemoApplication {    public static void main(String[] args) {        DefaultListableBeanFactory db=new DefaultListableBeanFactory();        XmlBeanDefinitionReader xr=new XmlBeanDefinitionReader(db);        xr.loadBeanDefinitions("Beans.xml");        Holder bean = db.getBean(Holder.class);        System.out.println(bean.getRumenz().getName());    }}
  • byName

配置文件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"       xmlns:util="http://www.springframework.org/schema/util"       xsi:schemaLocation="        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">    <bean id="rumenz" class="com.rumenz.Rumenz">        <property name="id" value="123"/>        <property name="name" value="入门小站"/>    </bean>    <bean id="holder" class="com.rumenz.Holder" autowire="byName">    </bean></beans>

调用

package com.rumenz;public class DemoApplication {    public static void main(String[] args) {        DefaultListableBeanFactory db=new DefaultListableBeanFactory();        XmlBeanDefinitionReader xr=new XmlBeanDefinitionReader(db);        xr.loadBeanDefinitions("Beans.xml");        Holder bean = db.getBean(Holder.class);        System.out.println(bean.getRumenz().getName());    }}

原文: https://rumenz.com/rumenbiji/spring-setter-injection.html