代码之家  ›  专栏  ›  技术社区  ›  TongChen

如何使用java配置创建内部bean?

  •  0
  • TongChen  · 技术社区  · 7 年前

    Spring启动版本:2.1.3.RELEASE,Spring框架版本:5.1.5.RELEASE。

    简单的xml配置如下:

    <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="CustomerBean" class="io.github.ctlove0523.Customer">
            <property name="person">
                <bean class="io.github.ctlove0523.Person">
                    <property name="name" value="stackoverflow" />
                    <property name="address" value="address1" />
                    <property name="age" value="15" />
                </bean>
            </property>
        </bean>
    </beans>
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   R.G    7 年前

    Person.java

    import org.springframework.beans.factory.annotation.Value;
    
    public class Person {
    
        @Override
        public String toString() {
            return "Person [name=" + name + ", address=" + address + ", age=" + age + "]";
        }
    
        private String name;
    
        private String address;
    
        private Integer age;
    
        public String getName() {
            return name;
        }
    
        @Value("stackoverflow")
        public void setName(String name) {
            this.name = name;
        }
    
        @Value("address1")
        public void setAddress(String address) {
            this.address = address;
        }
    
        @Value("15")
        public void setAge(Integer age) {
            this.age = age;
        }
    
    }
    

    CustomerBean.java

    import org.springframework.beans.factory.annotation.Autowired;
    
    public class CustomerBean {
    
    
        Person person;
    
        public Person getPerson() {
            return person;
        }
    
        @Autowired
        public void setPerson(Person person) {
            this.person = person;
        }
    
    }
    

    App.java

        import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    
    public class App 
    {
        public static void main( String[] args )
        {
            AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
            context.registerShutdownHook();
    
            CustomerBean customerBean = context.getBean(CustomerBean.class);
    
            System.out.println(customerBean.getPerson());
        }
    }
    

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    
    @Configuration
    public class AppConfig {
    
        @Bean
        public CustomerBean customerBean() {
            return new CustomerBean();
        }
    
        @Bean
        public Person person() {
            return new Person();
        }
    }
    

    输出:

    人员[姓名=堆叠溢出,地址=地址1,年龄=15]

    Create beans from inner class using spring

        2
  •  0
  •   jeroen_de_schutter    7 年前

    https://docs.spring.io/spring-javaconfig/docs/1.0.0.M4/reference/html/ch02s02.html

    取决于您的计算机代码 人 类,它看起来像这样:

    import io.github.ctlove0523.Customer;    
    
    @Configuration
    public class AppConfig {
        @Bean
        public Customer customerBean() {
            Customer myBean = new Customer();
            // constructor or setter methods for Person
            return myBean;
        }
    }