import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 服务提供核心类 * 该类的主要作用是加载beans.xml文件 * @author grace * */ public class ServiceProvinderCore { protected ApplicationContext ctx; /** * @param filename beans.xml */ public void load(String filename){ ctx=new ClassPathXmlApplicationContext(filename); } }
import org.apache.commons.lang.xwork.StringUtils; public class ServiceProvinder { private static ServiceProvinderCore sc; // 封装方法: // ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml"); // 静态方法,一调用该类就执行该方法 static{ sc=new ServiceProvinderCore(); sc.load("beans.xml"); } // 封装方法: // ISysUserGroupService sysUserGroupService=(ISysUserGroupService) ctx.getBean(ISysUserGroupService.SERVICE_NAME); public static Object getService(String beanName){ if(StringUtils.isBlank(beanName)){ throw new RuntimeException("您要访问的服务名称不能为空"); } Object bean=null; //如果spring容器中包含beanName if(sc.ctx.containsBean(beanName)){ bean=sc.ctx.getBean(beanName); } //如果spring容器中不包含beanName if(bean==null){ throw new RuntimeException("您要访问的服务名称["+beanName+"]不存在"); } return bean; } }
测试类:
import java.util.List; import org.junit.Test; import cn.grace.container.ServiceProvinder; import cn.grace.domain.SysUserGroup; import cn.grace.service.ISysUserGroupService; public class TestSysUserGroupService { @Test public void testSave() { // 使用自己封装的spring容器拿到service ISysUserGroupService sysUserGroupService=(ISysUserGroupService)ServiceProvinder.getService(ISysUserGroupService.SERVICE_NAME); // 原本的方法 // ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml"); // ISysUserGroupService sysUserGroupService=(ISysUserGroupService) ctx.getBean(ISysUserGroupService.SERVICE_NAME); SysUserGroup sysUserGroup = new SysUserGroup(); sysUserGroup.setName("销售部"); sysUserGroup.setPrincipal("xxx"); sysUserGroup.setIncumbent("ttt"); sysUserGroupService.saveSysUserGroup(sysUserGroup); } }
public interface ISysUserGroupService { public final static String SERVICE_NAME="cn.grace.service.impl.SysUserGroupServiceImpl"; }
1.操作方便,通过ServiceProvinder.getService(beanName);直接拿到service.
2.如果请求的beanName不合法,通过异常可以看到效果。