三种定义bean的方式

  

  • 方法一:基于XML的bean定义(需要提供setter方法)

1.首先编写student.java和teacher.java两个类

    Student.java:

public class Student {

private String name;

private Teacher teacher;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Teacher getTeacher() {
return teacher;
}

public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
}

  Teacher.java

                       public class Teacher {


private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

2.配置spring.xml基于XML的bean定义(需要提供setter方法)

<?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">

<bean id="student" class="test.Student">
<property name="name" value="张三"/>             /设置属性值
<property name="teacher" ref="teacher"/>
</bean>

<bean id="teacher" class="test.Teacher">
<property name="name" value="李四"/>          //设置属性值
</bean>
</beans>

 

  • 方法二:基于注解的bean定义(不需要提供setter方法)

     

    @Component("teacher")
    public class Teacher {

    @Value("李四")
    private String name;

    public String getName() {
    return name;
    }

    }
    @Component("student")
    public class Student {

    @Value("张三")
    private String name;

    @Resource
    private Teacher teacher;

    public String getName() {
    return name;
    }

    public Teacher getTeacher() {
    return teacher;
    }

    <?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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

    <!--扫描组件的包目录-->
    <context:component-scan base-package="test"/>

    </beans>

  • 方法三:基于Java类的bean定义(需要提供setter方法)

    @Configuration
    public class BeansConfiguration {

    @Bean
    public Student student(){
    Student student=new Student();
    student.setName("张三");
    student.setTeacher(teacher());
    return student;
    }

    @Bean
    public Teacher teacher(){
    Teacher teacher=new Teacher();
    teacher.setName("李四");
    return teacher;
    }

    }

     

 

入口函数为:

public class Main {

public static void main(String args[]){
AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(BeansConfiguration.class);
Student student= (Student) context.getBean("student");
Teacher teacher= (Teacher) context.getBean("teacher");
System.out.println("学生的姓名:"+student.getName()+"。老师是"+student.getTeacher().getName());
System.out.println("老师的姓名:"+teacher.getName());
}

}

 

 

posted @ 2019-04-29 22:01  夏的世界的伤  阅读(949)  评论(0编辑  收藏  举报