User类
package dao;
import org.springframework.stereotype.Component;
@Component("user1")
public class User {
public User() {
System.out.println("创建User对象");
}
public User(String msg) {
System.out.println("创建User对象"+msg);
}
public void show(){
System.out.println("一个学生对象!");
}
}
新增一个用于替代原xml配置文件的ApplicationCfg类,代码如下:
package dao;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages = "dao")
public class ApplicationCfg {
@Bean
public User getUser(){
return new User("成功!");
}
}
@Configuration相当于配置文件中的<beans/>,ComponentScan相当于配置文件中的context:component-scan,属性也一样设置
,@Bean相当于<bean/>,只能注解在方法和注解上,一般在方法上使用
测试:
//容器,注解配置应用程序容器,Spring通过反射ApplicationCfg.class初始化容器
ApplicationContext context=new AnnotationConfigApplicationContext(ApplicationCfg.class);
BookService bookService=context.getBean(BookService.class);
bookService.storeBook("java");
User user= (User) context.getBean("user1");
user.show();
User getUser= (User) context.getBean("getUser");
getUser.show();
结果:
创建User对象
创建User对象成功!
图书上货
添加图书java成功!
一个学生对象!
一个学生对象!
在ApplicationCfg中声明的方法getUser当相于在xml文件中定义了一个<bean id="getUser" class="..."/>,在User类上注解@Component("user1")相当于另一个<bean id="user1" class="..."/>。