@Configuration public class TestConfig { @Bean public UserBean userBean(){ UserBean ub = new UserBean(); ub.setId("1"); ub.setName("test"); ub.setPassword("123456"); return ub; } @Bean public RoleBean roleBean(UserBean user){ System.out.println(user); RoleBean roleBean =new RoleBean(); roleBean.setId(user.getId()); roleBean.setName(user.getName()); return roleBean; } }
public class RoleBean implements Serializable {
private String id;
private String name;
private Set<PermissionBean> permissions = new HashSet<>();
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<PermissionBean> getPermissions() {
return permissions;
}
public void setPermissions(Set<PermissionBean> permissions) {
this.permissions = permissions;
}
@Override
public String toString() {
return "RoleBean{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}
public class UserBean implements Serializable {
private String id;
private String name;
private String password;
private Set<RoleBean> roles = new HashSet<>();
public UserBean(){
super();
}
public UserBean(String id,String name, String password) {
this.id=id;
this.name = name;
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Set<RoleBean> getRole() {
return roles;
}
public void setRole(Set<RoleBean> roles) {
this.roles = roles;
}
@Override
public String toString() {
return "UserBean{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
1.Configuration注解类如上时
@RunWith(SpringRunner.class)
@SpringBootTest
public class ShirodemoApplicationTests {
@Test
public void test() {
AnnotationConfigApplicationContext tx = new AnnotationConfigApplicationContext(TestConfig.class);
RoleBean roleBean = (RoleBean) tx.getBean("roleBean");
System.out.println(roleBean);
}
}
结果:
UserBean{id='1', name='test', password='123456'}
RoleBean{id='1', name='test'}
2.改动Configuration注解类
@Configuration public class TestConfig { @Bean public UserBean userBean(){ UserBean ub = new UserBean(); ub.setId("1"); ub.setName("test"); ub.setPassword("123456"); return ub; } @Bean public UserBean userBeans(){ UserBean ub = new UserBean(); ub.setId("2"); ub.setName("test2"); ub.setPassword("123456"); return ub; } @Bean public RoleBean roleBean(UserBean userBeans){ System.out.println(userBeans); RoleBean roleBean =new RoleBean(); roleBean.setId(userBeans.getId()); roleBean.setName(userBeans.getName()); return roleBean; } }
结果:
UserBean{id='2', name='test2', password='123456'}
RoleBean{id='2', name='test2'}
测试1和2的结论:当@Bean注解的方法返回的对象唯一(在当前的@configuration中),则直接引用即可此对象即可:
当@Bean注解的方法返回的对象不唯一,则对象的引用决定引用的是哪一个@Bean:
1.可以用起别名解决
2.或者:使用@Qualifier注解
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务