spring中的@Configuration注解,@Bean注解和@ComponentScan注解
程序员文章站
2022-03-03 11:24:36
...
//@Configuration注解等同于spring 的xml
/*
MyConfig这个类加上了@Configation注解 就等同于建立了一个MyConfig.xml
*/
@Configuration
@ComponentScan("com.mmm.v")
/**
* @ComponentScan注解的作用的扫包,我这里和@Configuration联合使用的意思是:
* 将com.mmm.v包下面所有的对象都注入到spring的容器中
*/
public class MyConfig {
/**
* @Bean注解将对象放入spring的容器中 User的路径就相当于xml文件中<bean><bean/>标签中的class属性的路径
* 方法名就是<bean><bean/>标签中的id的名称。
*/
@Bean
public User user(){
return new User("z小名",18);
}
}
可以用下面的代码测试 com.mmm.v 包里面的对象 是否都放入到了spring容器中
public class vTestSpring {
private static AnnotationConfigApplicationContext annotationConfigApplicationContext;
public static void main(String[] args) {
/**
* 既然是注解形式 那么如何启动呢,就是说什么时候把@Bean注解的对象
* 放到spring容器中呢
* annotationConfigApplicationContext=new AnnotationConfigApplicationContext(MyConfig.class);
* 这种方式启动
*/
annotationConfigApplicationContext=new AnnotationConfigApplicationContext(MyConfig.class);
//获取对象
// UserService userService1= annotationConfigApplicationContext.getBean("userService", UserService.class);
// UserService userService2= annotationConfigApplicationContext.getBean("userService", UserService.class);
// User user1= annotationConfigApplicationContext.getBean("user", User.class);
// User user2= annotationConfigApplicationContext.getBean("user", User.class);
// System.out.println(user1==user1);
//获取spring容器中已经注入的对象的方法
String [] beanDefinitionNames= annotationConfigApplicationContext.getBeanDefinitionNames();
for (int i=0;i<beanDefinitionNames.length;i++){
System.out.println(beanDefinitionNames[i]);
}
}
}
上一篇: 实例变量初始化时机
下一篇: Spring bean(静态工厂实例化)