springmvc 中普通类调用注解service层 的方式除了
1.自动注入外:
@Autowired
UserService userService;
2.还可以这样:
工具类:
/**
* <p>
* 普通类调用Spring注解方式的Service层bean
* </p>
* @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:
<bean id="springBeanFactoryUtils" class="com.zd.common.SpringBeanFactoryUtils"/>
现在就可以进行调用了,demo:
/**
* <p>
* 用户
* </p>
* @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<String, String> getUserMap();
}
/**
* <p>
* 用户
* </p>
* @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<String, String> getUserMap() {
logger.warn("准备从数据库获取用户信息了...");
Map<String, String> userMap = new HashMap<String, String>();
userMap.put("name", "小强");
userMap.put("password", "123456");
logger.warn("从数据库获取用户信息完毕...");
return userMap;
}
}
controller中获取bean,并调用接口:
UserService userService2 = (UserService)SpringBeanFactoryUtils.getBean(UserService.class);
Map<String, String> userMap2 = userService2.getUserMap();