springMVC中controller层调用service层的方式

springmvc 中普通类调用注解service层 的方式除了

1.自动注入外:

 

@Autowired
UserService userService;


2.还可以这样:


工具类:

/**
 * 

* 普通类调用Spring注解方式的Service层bean *

* @author zhengdong 2016年10月18日 下午3:54:29 * @version V1.0 */ public class SpringBeanFactoryUtils implements ApplicationContextAware { private static ApplicationContext appCtx; /** * 此方法可以把ApplicationContext对象inject到当前类中作为一个静态成员变量。 * * @param applicationContext ApplicationContext 对象. * @throws BeansException * @author hzc */ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { appCtx = applicationContext; } /** * 获取ApplicationContext * * @return * @author hzc */ public static ApplicationContext getApplicationContext() { return appCtx; } /** * 这是一个便利的方法,帮助我们快速得到一个BEAN * * @param beanName bean的名字 * @return 返回一个bean对象 * @author hzc */ public static Object getBean(String beanName) { return appCtx.getBean(beanName); } /** * 这是一个便利的方法,帮助我们快速得到一个BEAN * * @param Class 服务bean * @return 返回一个bean对象 * @author hzc */ public static Object getBean(Class c) { return appCtx.getBean(c); } }

在配置文件中增加一个bean:


现在就可以进行调用了,demo:

/**
 * 

* 用户 *

* @author zhengdong 2016年10月11日 下午4:59:22 * @version V1.0 */ public interface UserService { /** * 获取用户信息 * @author zhengdong 2016年10月12日 上午9:42:32 * @return */ public Map getUserMap(); }

/**
 * 

* 用户 *

* @author zhengdong 2016年10月11日 下午4:59:57 * @version V1.0 */ @Transactional @Service("userService") public class UserServiceimpl implements UserService { private static final Logger logger = Logger.getLogger(UserServiceimpl.class); public Map getUserMap() { logger.warn("准备从数据库获取用户信息了..."); Map userMap = new HashMap(); userMap.put("name", "小强"); userMap.put("password", "123456"); logger.warn("从数据库获取用户信息完毕..."); return userMap; } }

controller中获取bean,并调用接口:

UserService userService2 = (UserService)SpringBeanFactoryUtils.getBean(UserService.class);
		Map userMap2 = userService2.getUserMap();






你可能感兴趣的:(Spring)