springMVC中controller层调用service层的方式

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();






  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis 博客地址:http://blog.csdn.net/qq598535550/article/details/51703190 我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能;而且在大部分教学课堂,也会把SSH作为最核心的教学内容。 但是,我们在实际应用发现,SpringMVC可以完全替代Struts,配合注解的方式,编程非常快捷,而且通过restful风格定义url,让地址看起来非常优雅。 另外,MyBatis也可以替换Hibernate,正因为MyBatis的半自动特点,我们程序猿可以完全掌控SQL,这会让有数据库经验的程序猿能开发出高效率的SQL语句,而且XML配置管理起来也非常方便。 好了,如果你也认同我的看法,那么下面我们一起来做整合吧! 在写代码之前我们先了解一下这三个框架分别是干什么的? 相信大以前也看过不少这些概念,我这就用大白话来讲,如果之前有了解过可以跳过这一大段,直接看代码! SpringMVC:它用于web,相当于controller(等价于传统的servlet和struts的action),用来处理用户请求。举个例子,用户在地址栏输入http://网站域名/login ,那么springmvc就会拦截到这个请求,并且调用controller相应的方法,(间可能包含验证用户名和密码的业务逻辑,以及查询数据库操作,但这些都不是springmvc的职责),最终把结果返回给用户,并且返回相应的页面(当然也可以只返回json/xml等格式数据)。springmvc就是做前面和后面过程的活,与用户打交道!! Spring:太强大了,以至于我无法用一个词或一句话来概括它。但与我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们java的类,当然也包括service dao里面的),有了这个机制,我们就不用在每次使用这个类的时候为它初始化,很少看到关键字new。另外spring的aop,事务管理等等都是我们经常用到的。 MyBatis:如果你问我它跟鼎鼎大名的Hibernate有什么区别?我只想说,他更符合我的需求。第一,它能自由控制sql,这会让有数据库经验的人(当然不是说我啦捂脸)编写的代码能搞提升数据库访问的效率。第二,它可以使用xml的方式来组织管理我们的sql,因为一般程序出错很多情况下是sql出错,别人接手代码后能快速找到出错地方,甚至可以优化原来写的sql。
### 回答1: 在Spring MVCService是应用程序的核心业务逻辑处理Service的主要职责是协调和处理各种业务逻辑,如调用DAO进行数据持久化操作、调用外部系统的接口等。下面是编写Spring MVCService的一般步骤: 1. 首先,需要在Service接口上添加@Service注解,以将该类标识为一个Service组件。例如: ```java @Service public interface UserService { // 定义Service接口的方法 // ... } ``` 2. 接着,编写Service实现类,实现Service接口定义的方法。在实现类上添加@Service注解,同时使用@Autowired注解将DAO的对象注入Service。例如: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; // 实现Service接口的方法 // ... } ``` 3. 在Service实现类,可以直接调用DAO方法进行数据持久化操作。例如: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; public void saveUser(User user) { userDao.save(user); } } ``` 4. 最后,在ControllerService对象注入Controller,并调用Service方法处理业务逻辑。例如: ```java @Controller public class UserController { @Autowired private UserService userService; @PostMapping("/users") public String saveUser(User user) { userService.saveUser(user); return "redirect:/users"; } } ``` 通过以上的步骤,我们可以编写出符合Spring MVC框架要求的Service代码。Service的作用是封装业务逻辑,使Controller只关注接收请求和返回响应的工作,提高了代码的可复用性和可测试性。 ### 回答2: 在Spring MVCService主要处理业务逻辑,负责处理数据的获取、处理和持久化等操作。以下是编写Spring MVC Service的一般步骤: 1. 首先,在Service实现类上添加@Service注解以标识为SpringService组件,例如: ``` @Service public class UserServiceImpl implements UserService { ... } ``` 2. 在Service接口定义具体的业务方法,例如: ``` public interface UserService { public User getUserById(int id); ... } ``` 3. 实现Service接口的方法,并在方法内部编写对应的业务逻辑。在方法可以调用Dao来获取数据,并进行相应的处理,例如: ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; public User getUserById(int id) { return userDao.getUserById(id); } ... } ``` 4. 在Service可以使用@Autowired注解注入依赖的Dao,通过依赖注入来访问数据访问方法,例如上述的示例注入操作。 5. 在Controller通过@Autowired注解注入对应的Service实例,然后在方法调用Service方法来实现业务功能,例如: ``` @Controller public class UserController { @Autowired private UserService userService; @RequestMapping("/user/{id}") public String getUser(@PathVariable("id") int id, Model model) { User user = userService.getUserById(id); model.addAttribute("user", user); return "user"; } ... } ``` 通过以上步骤,就可以在Spring MVC编写和使用Service来处理业务逻辑了。 ### 回答3: 在Spring MVCService是用来处理业务逻辑的,通常用来封装对数据持久的访问操作。 首先,我们需要在Service创建一个接口,定义要实现的业务方法。接口的命名通常以"XxxService"的形式命名,其"Xxx"是表示业务实体的名称。接口方法根据具体需求来定义,例如增删改查等。 接口定义完成后,我们需要创建一个实现该接口的类,命名通常为"XxxServiceImpl"。在该实现类,我们可以注入数据持久的对象,通过调用数据持久方法来完成对数据库的操作。在方法,可以进行一系列的业务逻辑处理,处理后的结果将返回给Controller。 在Service,可以根据具体的业务需求,调用其他Service方法或者调用第三方的服务。这样可以将业务逻辑进行解耦,提高代码的重用性和可维护性。 在编写Service的实现类时,通常会使用Spring的注解来进行依赖注入。通过在Service的实现类上添加@Service注解来标记该类是一个Service组件,同时在需要注入的依赖对象上添加@Autowired注解来完成依赖的注入。 总结来说,ServiceSpring MVC起到了封装业务逻辑的作用,通过接口和实现类的形式进行编写。在实现类,可以调用数据持久方法,进行业务处理,并返回结果给Controller。使用注解来完成依赖注入,提高代码的灵活性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值