最开始的是我们是通过xml文件格式的形式配置Spring容器的,这里是和Spring的xml文件对应的注解是@Configuration。@Configuration的作用就是告诉Spring这是一个配置类,我们可以通过@Bean标签在里面配置对应的Java Bean。
事例Bean:
public class Person {
private String name;
private Integer age;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
配置文件:
@Configuration//告诉Spring这是一个配置文件
public class SpringConfig {
@Bean//给容器中注册一个bean
public Person getPerson() {
return new Person("Lisi", 20);
}
}
实例化IOC容器,获取需要的Java Bean。这里通过AnnotationConfigApplicationContext类来初始化Spring容器,以前使用xml配置文件的时候与之对应是的是ClassPathXmlApplicationContext。这里我们是通过类型来获取Java Bean的。ClassPathXmlApplicationContext传的是一个xml配置文件,现在AnnotationConfigApplicationContext传的是我们用@Configuration注解的一个配置类
@Test
public void testAnnotation() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
Person person = context.getBean(Person.class);
System.out.println(person.toString());
}
使用注解将JavaBean注入到Spring IOC容器的时候默认的名字就是方法名,我们可以通过@Bean注解中的name属性来指定该Bean在Spring IOC中的名字
@Configuration//告诉Spring这是一个配置文件
public class SpringConfig {
@Bean(name = "person")//给容器中注册一个bean
public Person getPerson() {
return new Person("Lisi", 20);
}
}
在通过名字来获取对应的Java Bean的时候,就可以通过我们在@Bean注解中用name指定的名字来获取对应的Java Bean了
@Test
public void testAnnotation() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
Person person =(Person) context.getBean("person");
System.out.println(person.toString());
}