1. 举个栗子
先给出一个小Demo
1.1 POJO
类
import org.springframework.beans.factory.annotation.Value;
public class Person {
private String name;
private Integer age;
private String nickName;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", nickName='" + nickName + '\'' +
'}';
}
}
1.2 配置类 MainConfig
@Configuration
@ComponentScans(
value = {
@ComponentScan(value="com")
}
)
public class MainConfig {
// 给容器中注册一个Bean,类型为返回值的类型,id默认为方法名
@Bean("person")
public Person person(){
System.out.println("给容器中注册person。。。");
return new Person("ffff",2222);
}
}
2 App类- 第一种方式
public class App
{
public static void main( String[] args ) {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);
Person person = applicationContext.getBean(Person.class);
System.out.println(person);
String[] names = applicationContext.getBeanNamesForType(Person.class);
for(String a: names)
System.out.println(a);
}
}
上面这个例子是向AnnotationConfigApplicationContext
构造函数中传入一个注解类来注册组件的。以上是第一种方式ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);
-> 即通过传入一个或者多个注解类来注册组件,传入的类会作为组件被spring容器管理。
3 App类- 第二种方式
public class App
{
public static void main( String[] args ) {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext("com.spring");
Person person = applicationContext.getBean(Person.class);
System.out.println(person);
String[] names = applicationContext.getBeanNamesForType(Person.class);
for(String a: names)
System.out.println(a);
}
}
第二种方式是:ApplicationContext applicationContext = new AnnotationConfigApplicationContext("com.spring");
-> 传入一个包名,该包下的所有带有注解的类都会创建bean,这些Bean会被Spring容器管理