国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java spring webmvc如何實(shí)現(xiàn)控制反轉(zhuǎn)

瀏覽:3日期:2022-08-27 11:24:30

概述

本文基于示例的方式解釋控制反轉(zhuǎn),再看控制反轉(zhuǎn)之前,我們先看下常規(guī)控制流程,以數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)為例

示例并沒(méi)有實(shí)際訪(fǎng)問(wèn)數(shù)據(jù),而是基于service和dao,模擬請(qǐng)求數(shù)據(jù)

創(chuàng)建項(xiàng)目

注意:本實(shí)例基于Idea開(kāi)發(fā)工具

打開(kāi)創(chuàng)建項(xiàng)目選項(xiàng)(New Project),選擇Maven,不要選擇“Create from crchetype”,點(diǎn)擊Next

GroupID:com.example和ArtifactID:Demo,點(diǎn)擊Next和Finish

新生成的項(xiàng)目目錄結(jié)構(gòu)如下:

src main java resources test pom.xml

常規(guī)流程

main.java下面添加Package:com.example.dao

dao下面添加訪(fǎng)問(wèn)接口,同時(shí)添加兩種數(shù)據(jù)訪(fǎng)問(wèn)方式:

public interface UserDao { String getUser();}public class UserDaoMSSqlImpl implements UserDao { public String getUser() { return '從SQL Server查詢(xún)用戶(hù)'; }}public class UserDaoMySqlImpl implements UserDao { public String getUser() { return '從MySQL查詢(xún)用戶(hù)'; }}

添加服務(wù)層

main.java下面添加Package:com.example.service

添加訪(fǎng)問(wèn)類(lèi)

public interface UserService { void getUser();}public class UserServiceImpl implements UserService { // 如果想更換數(shù)據(jù)庫(kù),這個(gè)地方需要改一下 private UserDao userDao = new UserDaoMSSqlImpl(); public void getUser() { System.out.println(userDao.getUser()); }}

添加測(cè)試,在src.test下面添加UserTest

public class UserTest { public static void main(String[] args) { UserService userService = new UserServiceImpl(); userService.getUser(); }}

從上面的例子中看到,如果想更改數(shù)據(jù)連接,必須修改代碼,也就是service類(lèi)中,更新dao的初始化

控制反轉(zhuǎn)流程

項(xiàng)目pom.xml文件添加MVC依賴(lài)

<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 class='com.example.dao.UserDaoMSSqlImpl'></bean> <bean class='com.example.dao.UserDaoMySqlImpl'></bean> <bean class='com.example.service.UserServiceImpl'> <!-- 更新ref:mssqlImpl或mysqlImpl,即可實(shí)現(xiàn)數(shù)據(jù)庫(kù)切換 --> <property name='userDao' ref='mysqlImpl'></property> </bean></beans>

改寫(xiě)UserServiceImpl類(lèi)

public class UserServiceImpl implements UserService { private UserDao userDao; public void getUser() { System.out.println(userDao.getUser()); } // 程序被動(dòng)接受入口,依賴(lài)注入就是利用set方法注入 public void setUserDao(UserDao userDao) { this.userDao = userDao; }}

改寫(xiě)測(cè)試類(lèi)型

public class UserTest { public static void main(String[] args) { // 獲取Spring上下文對(duì)象 ApplicationContext context = new ClassPathXmlApplicationContext('services.xml'); UserService userService1 = (UserService)context.getBean('userServiceImpl'); userService1.getUser(); }}

從上面兩個(gè)示例里面看出:

常規(guī)流程的控制,程序相互的調(diào)用由代碼控制控制反轉(zhuǎn)把控制權(quán)交給用戶(hù),也就是由配置文件管理,程序本身不創(chuàng)建對(duì)象,變成被動(dòng)接受

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 美女扒开腿被男人猛视频 | 国产天堂亚洲精品 | 国产精品久久久久国产精品 | 欧美成人免费在线观看 | 99re热精品视频国产免费 | 日韩欧美在线观看一区 | 秘书高跟黑色丝袜国产91在线 | 114一级毛片免费 | 日韩精品在线一区二区 | 丝袜精品 欧美 亚洲 自拍 | 欧美一区二区三区日韩免费播 | 三级网站视频在线观看 | 九九久久精品 | 一区二区三区视频观看 | 手机看片国产欧美日韩高清 | 欧美福利一区二区三区 | 美女一级毛片 | 亚洲精品高清国产一线久久97 | 中文字幕在线视频观看 | 91综合精品网站久久 | 国产精品99久久久久久小说 | 亚洲精品xxxxx | 日本三级视频在线 | 九九免费精品视频 | 奇米5555 | 日韩在线二区全免费 | 久久久久香蕉视频 | 欧美色88| 国产成人成人一区二区 | 国产原创在线视频 | 美女网站在线观看视频18 | 人人公开免费超级碰碰碰视频 | 国产在线精品一区二区中文 | 国产在线啪 | 特级欧美午夜aa毛片 | 欧美日韩顶级毛片www免费看 | 亚洲精品国产一区二区三 | 男女免费视频网站 | 成人黄18免费网站 | 91精品一区二区综合在线 | 久草在线在线 |