前言
Spring Bean对象注入多个实例的姿势
一、Spring注入?
描述三者关系,UserBean对象中有Role对象中有Permission对象。
二、使用步骤
1.Bean对象
UserBean
package com.hh.userservice.pojo;
import com.hh.userservice.handle.ExampleTypeHandle;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import org.springframework.stereotype.Component;
import tk.mybatis.mapper.annotation.ColumnType;
import java.io.Serializable;
import java.util.Set;
@Data
@Accessors(chain = true)
@Component
@NoArgsConstructor
@AllArgsConstructor
public class UserBean implements Serializable {
public static final long serialVersionUID = 1L;
private String id;
@ColumnType(jdbcType = JdbcType.VARCHAR, typeHandler = ExampleTypeHandle.class)
private String username;
private String password;
private String email;
private String telephone;
private Set<Role> roles;
}
Role
package com.hh.userservice.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Set;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Role implements Serializable {
public static final Long serialVersionUID=2L;
private String roleId;
private String name;
private String permissionId;
private Set<Permission> permissions;
}
Permission
package com.hh.userservice.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Permission implements Serializable {
public static final Long serialVersionUID=3L;
private String permissionId;
private String permissionString;
}
2.编写配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:redisson="http://redisson.org/schema/redisson"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://redisson.org/schema/redisson http://redisson.org/schema/redisson/redisson.xsd">
<bean id="userBean" class="com.hh.userservice.pojo.UserBean">
<property name="id" value="1"></property>
<property name="username" value="rqh"></property>
<property name="email" value="9@qq.com"></property>
<property name="telephone" value="178****3721"></property>
<property name="password" value="123456"></property>
<!-- <property name="roles" ref="admin_role1"></property>-->
<property name="roles">
<set>
<ref bean="admin_role1"></ref>
<ref bean="admin_role2"></ref>
</set>
</property>
</bean>
<bean id="admin_role1" class="com.hh.userservice.pojo.Role">
<property name="roleId" value="1"></property>
<property name="name" value="admin"></property>
<property name="permissionId" value="1"></property>
<property name="permissions" ref="admin_permission"></property>
</bean>
<bean id="admin_role2" class="com.hh.userservice.pojo.Role">
<property name="roleId" value="2"></property>
<property name="name" value="admin"></property>
<property name="permissionId" value="2"></property>
<property name="permissions" ref="admin_permission"></property>
</bean>
<bean id="admin_permission" class="com.hh.userservice.pojo.Permission">
<property name="permissionId" value="1"></property>
<property name="permissionString" value="admin_manager"></property>
</bean>
</beans>
3编写单元测试
package com.hh.userservice;
import com.hh.userservice.pojo.UserBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestGetBeanByContext {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:user.xml");
UserBean bean = applicationContext.getBean(UserBean.class);
System.out.println(bean);
}
}
总结
人生物语:要锋芒,又不能毕露,那就只有裹锋而后行。裹锋有一种柔韧的力度,柔韧在外,力度在内。缓行则丰满而厚实,给人一种有劲的感觉。