当前位置: 首页 > wzjs >正文

企业网站优化服务商视频广告联盟平台

企业网站优化服务商,视频广告联盟平台,企业网站建设文案案例,长春专业做网站的公司有哪些spring框架通过依赖注入,对象之间的依赖关系由 Spring 容器来管理,而不是在代码中硬编码。 这意味着一个类不再需要自己创建和管理其依赖的对象,而是由 Spring 容器将依赖的对象注入到类中。 例如: 在一个用户管理系统中&#xf…

spring框架通过依赖注入,对象之间的依赖关系由 Spring 容器来管理,而不是在代码中硬编码。

这意味着一个类不再需要自己创建和管理其依赖的对象,而是由 Spring 容器将依赖的对象注入到类中

例如:

在一个用户管理系统中,UserService 类依赖于 UserDao 类,使用 Spring 的依赖注入,UserService 类不需要在内部使用 new 关键字创建 UserDao 的实例,而是由 Spring 容器将 UserDao 的实例注入到 UserService 中。这样,UserService 与 UserDao 的实现细节解耦,当 UserDao 的实现发生变化时,UserService 类不需要进行修改。

场景一:更换 UserDao 的实现类

原理

Spring 的自动注入基于依赖倒置原则,让 UserService 依赖于抽象(接口)而非具体实现当需要更换 UserDao 实现类时,只需在 Spring 的配置中调整注入的具体实现类,而 UserService 类本身依赖的是抽象接口,不会受到实现类更换的影响。

代码示例

1. 定义 UserDao 接口
// UserDao 接口,定义用户数据访问的方法
public interface UserDao {void saveUser();
}
2. 实现 UserDao 接口
// 旧的 UserDao 实现类
import org.springframework.stereotype.Repository;@Repository
public class OldUserDao implements UserDao {@Overridepublic void saveUser() {System.out.println("使用旧方法保存用户信息");}
}// 新的 UserDao 实现类
import org.springframework.stereotype.Repository;@Repository
public class NewUserDao implements UserDao {@Overridepublic void saveUser() {System.out.println("使用新方法保存用户信息");}
}
3. 定义 UserService 类
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserService {private UserDao userDao;@Autowiredpublic UserService(UserDao userDao) {this.userDao = userDao;}public void createUser() {userDao.saveUser();}
}

在 UserService 类中,构造函数通过 @Autowired 注解注入 UserDao 接口的实现类。UserService 只依赖于 UserDao 接口,不关心具体是哪个实现类。

4. Spring 配置类(使用 Java 配置)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class AppConfig {// 这里可以选择注入旧的实现类// @Bean// public UserDao userDao() {//     return new OldUserDao();// }// 也可以选择注入新的实现类@Beanpublic UserDao userDao() {return new NewUserDao();}@Beanpublic UserService userService(UserDao userDao) {return new UserService(userDao);}
}

场景二:UserDao 构造函数发生变化

代码示例

首先,我们有一个简单的 UserDao 类和 UserService 类,UserService 类手动创建 UserDao 实例。

// UserDao 类,用于处理用户数据访问
class UserDao {public UserDao() {System.out.println("UserDao 实例被创建");}public void saveUser() {System.out.println("保存用户信息");}
}// UserService 类,用于处理用户业务逻辑,依赖于 UserDao
class UserService {private UserDao userDao;public UserService() {this.userDao = new UserDao();}public void createUser() {userDao.saveUser();}
}// 测试类
public class Main {public static void main(String[] args) {UserService userService = new UserService();userService.createUser();}
}

在这个初始代码中,UserService 类的构造函数里手动使用 new 关键字创建了 UserDao 实例。

构造函数变化

现在,假设 UserDao 的需求发生了变化,需要在构造函数中传入一个数据库连接字符串。

// 修改后的 UserDao 类,构造函数需要传入数据库连接字符串
class UserDao {private String dbConnectionString;public UserDao(String dbConnectionString) {this.dbConnectionString = dbConnectionString;System.out.println("UserDao 实例被创建,使用数据库连接字符串: " + dbConnectionString);}public void saveUser() {System.out.println("使用 " + dbConnectionString + " 保存用户信息");}
}// UserService 类,由于 UserDao 构造函数变化,需要修改
class UserService {private UserDao userDao;public UserService() {// 这里需要修改,因为 UserDao 构造函数发生了变化this.userDao = new UserDao("jdbc:mysql://localhost:3306/mydb");}public void createUser() {userDao.saveUser();}
}// 测试类
public class Main {public static void main(String[] args) {UserService userService = new UserService();userService.createUser();}
}

可以看到,由于 UserDao 的构造函数发生了变化,UserService 类的构造函数也必须进行修改,这就体现了 UserService 与 UserDao 实现细节的紧密耦合。

http://www.dtcms.com/wzjs/411788.html

相关文章:

  • 网站如何做背景音乐如何找外链资源
  • 淮北市建设投资有限责任公司重庆seo排名外包
  • 网站定位包括哪些内容最近新闻热点事件
  • 深圳企业网站建设推广服务2022最新时事新闻及点评
  • 德阳市建设管理一体化平台网站网络营销方案设计毕业设计
  • 2021建站什么关键词可以搜到那种
  • 做暖暖无码网站公司网站搭建
  • 用什么编程语言做网站好微信营销案例
  • 哪里建设网站seo优化网站推广
  • 外贸网站搭建公司餐饮营销方案100例
  • 宠物电商网站模板免费观看行情软件网站进入
  • 做flash网站框架引擎现在阳性最新情况
  • 名片在哪个网站可以做百度代理查询
  • 网站建设虚拟服务器新品推广活动方案
  • 备案网站域名和主机关系做一个微信小程序需要多少钱
  • 价格网 日本安徽百度seo公司
  • 响应式网站源码谷歌seo排名技巧
  • 企业级网站内容管理解决方案免费的网页设计成品下载
  • 网站内容做淘宝店铺链接影响排名吗百度推广关键词怎么优化
  • 网站设计的技术选择万网的app叫什么
  • 长沙企业建网站2024年4月新冠疫情结束了吗
  • 天津做宠物饲料的网站如何做一个网页
  • 广州软件网站开发网络优化是做什么的
  • 南京网站设计机构开发一个网站需要多少钱
  • 精品课程网站设计报告拼多多关键词排名查询
  • 企业主页设计邵阳seo优化
  • 用divid做网站代码免费的网络推广平台
  • asp.net 网站访问量宁波seo咨询
  • 广州开发网站图片外链生成器
  • 做美国直邮物流网站数字营销策略有哪些