根据 Bean 名称延迟查找
public class Demo {
public static void main(String[] args) {
AnnotationConfigApplicationContext beanFactory = new AnnotationConfigApplicationContext();
ObjectFactory<User> objectFactory = (ObjectFactory<User>) beanFactory.getBean("objectFactory");
User user = objectFactory.getObject();
System.out.println("延迟查找:" + user);
}
/**
* 通过 Java 注解的方式,定义了一个 Bean
*/
@Bean
public User user() {
User user = new User();
user.setId(1L);
user.setName("张三");
return user;
}
}
根据 Bean 类型查找
根据类型查找多个bean
对象
public class Demo {
public static void main(String[] args) {
AnnotationConfigApplicationContext beanFactory = new AnnotationConfigApplicationContext();
beanFactory.register(Demo.class);
beanFactory.refresh();
if (beanFactory instanceof ListableBeanFactory) {
ListableBeanFactory listableBeanFactory = (ListableBeanFactory) beanFactory;
System.out.println("根据类型查找的 User 集合对象:" + listableBeanFactory.getBeansOfType(User.class));
}
}
/**
* 通过 Java 注解的方式,定义了一个 Bean
*/
@Bean
public User user() {
User user = new User();
user.setId(1L);
user.setName("张三");
return user;
}
}
根据 Bean 名称查找
public class Demo {
public static void main(String[] args) {
AnnotationConfigApplicationContext beanFactory = new AnnotationConfigApplicationContext();
beanFactory.register(Demo.class);
beanFactory.refresh();
System.out.println("根据名称查找的 User 集合对象:" + beanFactory.getBean("user"));
}
/**
* 通过 Java 注解的方式,定义了一个 Bean
*/
@Bean
public User user() {
User user = new User();
user.setId(1L);
user.setName("张三");
return user;
}
}
根据 Java 注解查找
先定义一个注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Super {
}
定义一个对象,并添加@Super
注解
@Super
public class User {
private Long id;
private String name;
}
查找对象
public class Demo {
public static void main(String[] args) {
AnnotationConfigApplicationContext beanFactory = new AnnotationConfigApplicationContext();
beanFactory.register(Demo.class);
beanFactory.refresh();
if (beanFactory instanceof ListableBeanFactory) {
ListableBeanFactory listableBeanFactory = (ListableBeanFactory) beanFactory;
System.out.println("查找标注 @Super 所有的 User 集合对象:" + listableBeanFactory.getBeansWithAnnotation(Super.class));
}
}
/**
* 通过 Java 注解的方式,定义了一个 Bean
*/
@Bean
public User user() {
User user = new User();
user.setId(1L);
user.setName("张三");
return user;
}
}