@Configuration作用在类上,相当于一个xml文件
@bean作用于方法上,相当于xml配置中的<bean>标签
一个例子:
新建一个Springboot工程
新建一个User类:User.java
1 package com.springboot.test; 2 3 //建立一个User对象 4 public class User { 5 private String username; 6 private String password; 7 private Integer age; 8 9 public String getUsername() { 10 return username; 11 } 12 13 public void setUsername(String username) { 14 this.username = username; 15 } 16 17 public String getPassword() { 18 return password; 19 } 20 21 public void setPassword(String password) { 22 this.password = password; 23 } 24 25 public Integer getAge() { 26 return age; 27 } 28 29 public void setAge(Integer age) { 30 this.age = age; 31 } 32 }
新建一个数据库管理类:UserDAO.java,这里模拟数据库查询操作。
1 package com.springboot.test; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 // 模拟数据库操作 7 public class UserDAO { 8 public List<User> queryUserList(){ 9 List <User> result = new ArrayList<User>(); 10 for (int i=0;i<10;i++){ 11 User user = new User(); 12 user.setUsername("username:"+i); 13 user.setPassword("password:"+i); 14 user.setAge(i+1); 15 result.add(user); 16 } 17 return result; 18 } 19 }
新建一个UserService.java
1 package com.springboot.test; 2 3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Service; 5 6 import java.util.List; 7 8 @Service 9 public class UserService { 10 11 @Autowired 12 //注入spring容器中的bean对象 13 private UserDAO userDAO; 14 15 public List<User> queryUserList(){ 16 //调用userDAO中的方法进行查询 17 return userDAO.queryUserList(); 18 } 19 }
新建配置文件SpringConfig.java,相当于在Spring中的xml配置。
1 package com.springboot.test; 2 3 import org.springframework.context.annotation.Bean; 4 import org.springframework.context.annotation.ComponentScan; 5 import org.springframework.context.annotation.Configuration; 6 7 @Configuration //通过该注解表明该类是一个Spring的配置,相当于一个xml文件 8 @ComponentScan(basePackages = "com.springboot.test") //配置扫描包 9 public class SpringConfig { 10 11 @Bean //通过该注解来表明一个Bean对象,相当于一个xml中的<bean>标签 12 public UserDAO getUserDAO(){ 13 return new UserDAO(); //直接new对象做演示 14 } 15 }
新建一个测试文件TestApplication.java
1 package com.springboot.test; 2 import org.springframework.context.annotation.AnnotationConfigApplicationContext; 3 4 import java.util.List; 5 6 public class TestApplication { 7 public static void main(String[] args) { 8 //通过Java配置来实例化Spring容器 9 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); 10 //在Spring容器中获取Bean对象 11 UserService userService = context.getBean(UserService.class); 12 13 //调用对象中的方法 14 List<User> list = userService.queryUserList(); 15 for (User user:list){ 16 System.out.println(user.getUsername() +", "+ user.getPassword()+", "+user.getAge()); 17 } 18 19 //销毁context 20 context.destroy(); 21 } 22 23 }
文件结构
运行输出
username:0, password:0, 1 username:1, password:1, 2 username:2, password:2, 3 username:3, password:3, 4 username:4, password:4, 5 username:5, password:5, 6 username:6, password:6, 7 username:7, password:7, 8 username:8, password:8, 9 username:9, password:9, 10
可以看出,使用springboot可以通过注解的方式对容器进行配置,可以避免使用晦涩费劲的xml配置,方便开发以及后续的管理。