同一个@Configuration注解的类里的@Bean注解的bean互相调用 |
您所在的位置:网站首页 › jsp如何调用javabean中某一类的方法 › 同一个@Configuration注解的类里的@Bean注解的bean互相调用 |
1.准备
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 RoleBean roleBean(UserBean user){
System.out.println(user);
RoleBean roleBean =new RoleBean();
roleBean.setId(user.getId());
roleBean.setName(user.getName());
return roleBean;
}
}
实体类UserBean 和 RoleBean
public class RoleBean implements Serializable {
private String id;
private String name;
private Set 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 getPermissions() {
return permissions;
}
public void setPermissions(Set 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 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 getRole() {
return roles;
}
public void setRole(Set 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: 提示:还有几种解决方法(@Bean不唯一)1.可以用起别名解决 2.或者:使用@Qualifier注解 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |