当前位置: 首页 > 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/274181.html

相关文章:

  • 织梦建设手机网站域名注册免费
  • wordpress网站文章加密青岛百度网站排名优化
  • 网站建设方案免费小型培训机构管理系统
  • 如何做拦截网站百度提升优化
  • 优酷网站怎么做的苏州关键词排名系统
  • wordpress 置顶顺序排名优化网站seo排名
  • 免费网站建站有哪些百度新闻搜索
  • 祥云网站建设找推网
  • 宠物电商网站模板深圳网站优化推广方案
  • 上海自助建站平台免费站推广网站不用下载
  • 先做网站后付款网络推广网站推广淘宝运营商
  • 教育机构网站开发网址seo分析
  • wordpress简便安装北京网站优化服务
  • 温州免费做网站重庆seo论坛
  • 做海淘的网站做海淘的网站哈尔滨seo优化公司
  • 高权重网站 内页做跳转给新网站seoapp推广
  • 网站设计工资待遇全国十大教育机构
  • 在常州青之锋做网站客服怎么样品牌网络推广怎么做
  • 自动优化网站建设电话公司域名注册步骤
  • 黄色为主的网站百度知道合伙人官网登录入口
  • 洛阳最好的做网站的公司哪家好全世界足球排名国家
  • 设计苹果手机网站企业模板建站
  • 门户网站有上线了建站
  • 怎么做招聘网站的数据分析app注册拉新平台
  • 做网站后台运营这个工作怎么样百度识图搜索引擎
  • 做简历网站知乎seo收录查询工具
  • 高级建站网站短视频代运营公司
  • 网站怎么做中英文切换如何在百度上投放广告
  • 东莞做网站哪里好深圳网络广告推广公司
  • 怎么设计一个app上海网站建设优化