1.用@ComponentScan("com.he.pojo")去扫描
@Configuration
@ComponentScan("com.he.pojo")
public class HeConfig {
}
@Component("b")
public class Book {
@Value("java")
private String name;
@Value("800")
private int size;
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", size=" + size +
'}';
}
}
@Component
//@Scope("prototype")
public class User {
@Value("何志康")
private String name;
@Value("19")
private int age;
@Autowired(required = false)
private Book book;
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", book=" + book +
'}';
}
}
@Configuration标明实体类,@Component()标明组件,()里为被注册时的bean的id,用@ComponentScan("com.he.pojo")扫描对应包下的组件,并自动创建bean,并会对属性自动装配。
2.用@bean去创建
@Configuration
public class HeConfig2 {
@Bean
public User user(){
User user = new User(book());
return user;
}
@Bean
public Book book(){
return new Book();
}
}
对应的实体类就不需要@Component的注解了,配置类也不需要扫描,相当于xml中的<bean>标签。
测试代码:
@Test
public void test(){
ApplicationContext context = new AnnotationConfigApplicationContext(HeConfig.class);
User user = context.getBean("user", User.class);
System.out.println(user);
}