本文使用的项目和文章java 项目中使用 sping (XML) 中使用的项目结构一模一样,所以在这就不贴重复的代码了。
看一下项目结构可以发现只是在默认包下多了一个 MyConfig 类。在一般情况下 spring 的配置类都会写成 **Config,方便识别。
可能有人看到了这个项目中还有 Bean.xml 文件... 不是说用 java 类配置 spring 吗。这个的确是用 java 类配置,只是因为这个项目是我从 xml 那个项目复制过来的,同时 Bean.xml 也无关紧要,程序并不会运行它,所以我就懒得删除了。
看一下 MyConfig 配置类的代码吧
@Configuration
public class MyConfig {
@Bean
public Userservice userservice() {
Userservice userservice = new Userservice();
userservice.setUser(user());
userservice.setUserDAO(userDAOImp2());
return userservice;
}
@Bean
public User user() {
User user = new User();
user.setAge(20);
user.setName("小白");
return user;
}
@Bean(name="u1")
public UserDAO userDAOImp1() {
return new UserDAOImp1();
}
@Bean
public UserDAO userDAOImp2() {
return new UserDAOImp2();
}
}
@Configuration 注解表示告诉spring我这个类是 spring 的配置文件, 来这里找 bean 资源。
@Bean 注解表示我这个方法代表一个 bean 资源, 让 spring 装配。
在配置类中给 bean 资源的成员变量赋值和平常的 java 赋值没有什么区别, 直接在方法里写就行了。 就是注意set的值如果是个bean资源的话, 需要写这个 bean 资源在配置类中定义的方法。
然后是UserMain
public class UserMain {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
Userservice userservice =context.getBean("userservice",Userservice.class);
userservice.add();
}
}
这里使用的容器变成 AnnotationConfigApplicationContext 了, 参数写我们刚才写的配置文件。这样使用 java 配置 spring 的项目就完成了!