Java spring webmvc如何实现控制反转
程序员文章站
2022-04-25 18:16:59
概述本文基于示例的方式解释控制反转,再看控制反转之前,我们先看下常规控制流程,以数据库访问为例示例并没有实际访问数据,而是基于service和dao,模拟请求数据创建项目注意:本实例基于idea开发工...
概述
本文基于示例的方式解释控制反转,再看控制反转之前,我们先看下常规控制流程,以数据库访问为例
示例并没有实际访问数据,而是基于service和dao,模拟请求数据
创建项目
注意:本实例基于idea开发工具
打开创建项目选项(new project),选择maven,不要选择“create from crchetype”,点击next
groupid:com.example和artifactid:demo,点击next和finish
新生成的项目目录结构如下:
- src
- main
- java
- resources
- test
- pom.xml
常规流程
main.java下面添加package:com.example.dao
dao下面添加访问接口,同时添加两种数据访问方式:
public interface userdao { string getuser(); } public class userdaomssqlimpl implements userdao { public string getuser() { return "从sql server查询用户"; } } public class userdaomysqlimpl implements userdao { public string getuser() { return "从mysql查询用户"; } }
添加服务层
main.java下面添加package:com.example.service
添加访问类
public interface userservice { void getuser(); } public class userserviceimpl implements userservice { // 如果想更换数据库,这个地方需要改一下 private userdao userdao = new userdaomssqlimpl(); public void getuser() { system.out.println(userdao.getuser()); } }
添加测试,在src.test下面添加usertest
public class usertest { public static void main(string[] args) { userservice userservice = new userserviceimpl(); userservice.getuser(); } }
从上面的例子中看到,如果想更改数据连接,必须修改代码,也就是service类中,更新dao的初始化
控制反转流程
项目pom.xml文件添加mvc依赖
<dependencies> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-webmvc</artifactid> <version>5.2.8.release</version> </dependency> </dependencies>
resources添加配置文件services.xml
<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="mssqlimpl" class="com.example.dao.userdaomssqlimpl"></bean> <bean id="mysqlimpl" class="com.example.dao.userdaomysqlimpl"></bean> <bean id="userserviceimpl" class="com.example.service.userserviceimpl"> <!-- 更新ref:mssqlimpl或mysqlimpl,即可实现数据库切换 --> <property name="userdao" ref="mysqlimpl"></property> </bean> </beans>
改写userserviceimpl类
public class userserviceimpl implements userservice { private userdao userdao; public void getuser() { system.out.println(userdao.getuser()); } // 程序被动接受入口,依赖注入就是利用set方法注入 public void setuserdao(userdao userdao) { this.userdao = userdao; } }
改写测试类型
public class usertest { public static void main(string[] args) { // 获取spring上下文对象 applicationcontext context = new classpathxmlapplicationcontext("services.xml"); userservice userservice1 = (userservice)context.getbean("userserviceimpl"); userservice1.getuser(); } }
从上面两个示例里面看出:
常规流程的控制,程序相互的调用由代码控制
控制反转把控制权交给用户,也就是由配置文件管理,程序本身不创建对象,变成被动接受
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 详解CSS3实现响应式手风琴效果
推荐阅读
-
Java spring webmvc如何实现控制反转
-
Java Spring WEB应用实例化如何实现
-
Spring的IOC控制反转实现注解方式配置
-
在java中如何实现字符串的反转
-
【SSH进阶之路】一步步重构容器实现Spring框架——解决容器对组件的“侵入式”管理的两种方案--主动查找和控制反转(九)
-
【SSH进阶之路】一步步重构容器实现Spring框架——解决容器对组件的“侵入式”管理的两种方案--主动查找和控制反转(九)
-
Spring实现银行业务介绍(loc控制反转、AOP编程、事务、标签)
-
Java Spring 控制反转(IOC)容器详解
-
在java中如何实现字符串的反转
-
Java中spring hibernate如何实现动态替换表名