1.首先創(chuàng)建一個 Person 類,也就是要注入到容器中的 bean霞揉。
package bean;
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2.創(chuàng)建一個 BeanConfig 類播聪,使用 @Configuration 來聲明該類是一個配置類,相當(dāng)于以前的 beans.xml碰酝。在配置類的方法上使用 @Bean,就會往容器中注冊一個bean戴差,bean 的類型就是該方法的返回值送爸,bean 的名稱默認(rèn)就是方法名。
package config;
import bean.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class BeanConfig {
@Bean
public Person person() {
return new Person("zhangsan", 28);
}
}
3.查看效果(創(chuàng)建一個 App 類)暖释,使用 AnnotationConfigApplicationContext 來獲取使用注解配置的 bean袭厂。同時可以使用 ApplicationContext 的 getBeanNamesForType(配置類) 方法獲取相對應(yīng)的 bean 名稱。
import bean.Person;
import config.BeanConfig;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App {
public static void main(String[] args) {
ApplicationContext applicationContext =
new AnnotationConfigApplicationContext(BeanConfig.class);
Person person = applicationContext.getBean(Person.class);
System.out.println(person);
String[] beanNames = applicationContext.getBeanNamesForType(Person.class);
for (String beanName : beanNames) {
System.out.println("beanName: " + beanName);
}
}
}
運行結(jié)果:
Person{name='zhangsan', age=28}
beanName: person
4.修改 bean 名稱的兩種方式
// 1. 修改 Bean 名稱的第一種方法:直接修改方法名
@Bean
public Person ps() {
return new Person("zhangsan", 28);
}
// 2. 給 @Bean 注解添加 value 值球匕,如 @Bean(value = "ps")
@Bean(value = "ps")
public Person person() {
return new Person("zhangsan", 28);
}