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

php语言做的大网站wordpress页脚小工具

php语言做的大网站,wordpress页脚小工具,网站做打火机如何,做网站方法目录 一、什么是控制反转(IoC)? 二、什么是依赖注入(DI)? 三、如何在 springboot 中使用 IoC 和 DI? 总结 一、什么是控制反转(IoC)? 控制反转&#xff…

目录

一、什么是控制反转(IoC)?

二、什么是依赖注入(DI)?

三、如何在 springboot 中使用 IoC 和 DI?

总结


一、什么是控制反转(IoC)?

控制反转(Inversion of Control,简称 IoC)是一种设计原则,它的目的是降低代码之间的耦合度,提高模块化和可测试性。控制反转的含义是,将对象的创建、配置和管理交给一个外部容器来完成,而不是由对象自己或使用对象的类来完成。这样,对象就不需要知道或关心它们的依赖关系是如何被创建和维护的,只需要按照一定的规则和接口与容器进行交互即可。

在 spring 框架中,IoC 容器就是负责实现控制反转的核心组件,它可以通过配置文件或注解的方式来管理应用程序中的各种 bean(即被容器管理的对象)。IoC 容器可以根据 bean 的定义和依赖关系来自动创建、装配和销毁 bean,从而简化了开发者的工作。

二、什么是依赖注入(DI)?

依赖注入(Dependency Injection,简称 DI)是一种实现控制反转的具体方法,它的思想是,当一个对象需要另一个对象(或多个对象)来完成某些功能时,不是由该对象自己去创建或查找依赖对象,而是由外部容器在运行时将依赖对象通过构造器、方法或属性等方式注入到该对象中。这样,对象就可以在不改变自身代码的情况下,动态地获得所需的依赖对象,并且可以方便地替换不同的实现。

在 spring 框架中,DI 是通过 IoC 容器来实现的,开发者只需要在 bean 的定义中声明其依赖关系,或者在 bean 的类中使用注解来标注其依赖属性或方法,就可以让 IoC 容器自动地为其注入相应的 bean。spring 支持基于类型(by type)、基于名称(by name)和基于构造器(by constructor)等多种方式来进行依赖注入。

三、如何在 springboot 中使用 IoC 和 DI?

springboot 是一种基于 spring 的轻量级框架,它可以帮助开发者快速搭建和运行 spring 应用程序,无需过多的配置和代码。springboot 采用了约定优于配置(convention over configuration)的原则,提供了一系列的自动配置类和启动器(starter),使得开发者只需要引入相应的依赖,并按照一定的规范来编写代码,就可以让 springboot 为其自动配置好所需的 bean 和组件。

要在 springboot 中使用 IoC 和 DI,有以下几个步骤:

  1. 在 pom.xml 文件中引入 spring-boot-starter-web 依赖,这会自动引入 spring-webmvc、spring-aop、spring-beans 等与 web 开发相关的组件。
  2. 在主类上使用 @SpringBootApplication 注解,这会启用自动配置、组件扫描和其他特性。
  3. 在需要被 IoC 容器管理的类上使用 @Component、@Service、@Controller、@Repository 等注解,这会让 springboot 自动扫描并注册这些类为 bean。
  4. 在需要依赖注入的类中使用 @Autowired、@Resource、@Inject 等注解,或者使用构造器或 setter 方法,来标注或声明其依赖的 bean,这会让 springboot 自动为其注入相应的 bean 实例。
  5. 在 application.properties 或 application.yml 文件中配置一些自定义的属性或参数,这会覆盖 springboot 的默认配置,并且可以在 bean 中使用 @Value 或 @ConfigurationProperties 注解来获取这些属性的值。

下面是一个简单的示例,演示了如何在 springboot 中使用 IoC 和 DI 来实现一个用户服务的功能:

// User.java
package com.example.demo.entity;import lombok.Data;@Data
public class User {private Long id;private String name;private Integer age;
}// UserDao.java
package com.example.demo.dao;import com.example.demo.entity.User;
import org.springframework.stereotype.Repository;import java.util.ArrayList;
import java.util.List;
import java.util.Optional;@Repository
public class UserDao {// 模拟数据库private static final List<User> users = new ArrayList<>();static {users.add(new User(1L, "Alice", 20));users.add(new User(2L, "Bob", 21));users.add(new User(3L, "Charlie", 22));}// 根据 id 查询用户public User findById(Long id) {Optional<User> user = users.stream().filter(u -> u.getId().equals(id)).findFirst();return user.orElse(null);}// 查询所有用户public List<User> findAll() {return users;}
}// UserService.java
package com.example.demo.service;import com.example.demo.dao.UserDao;
import com.example.demo.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserService {// 注入 UserDao@Autowiredprivate UserDao userDao;// 根据 id 查询用户public User getUserById(Long id) {return userDao.findById(id);}// 查询所有用户public List<User> getAllUsers() {return userDao.findAll();}
}// UserController.java
package com.example.demo.controller;import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class UserController {// 注入 UserService@Autowiredprivate UserService userService;// 根据 id 查询用户@GetMapping("/user/{id}")public User getUser(@PathVariable Long id) {return userService.getUserById(id);}// 查询所有用户@GetMapping("/users")public List<User> getUsers() {return userService.getAllUsers();}
}// DemoApplication.java
package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

总结

控制反转和依赖注入是 spring 框架的核心特征,它们可以帮助开发者编写出低耦合、高内聚、易测试的代码,提高开发效率和质量。springboot 是一种基于 spring 的轻量级框架,它可以让开发者更方便地使用 spring 的功能,无需过多的配置和代码。要在 springboot 中使用 IoC 和 DI,只需要引入相应的依赖,使用一些简单的注解,就可以实现对象的创建、配置和管理。

http://www.yayakq.cn/news/380769/

相关文章:

  • 创建网站数据库wordpress安装到本地
  • 龙华网站建设设计制作公司wordpress纯代码添加海报
  • 淮北网站开发常州公司做网站
  • 好的网站搭建公司网站辅助导航
  • wordpress网站速度时快时慢不能用于制作网页
  • 兰州市生态建设管理局网站沈阳建网站 哪家好
  • 帮客户做网站内容18款禁止未成年软件app
  • wordpress让浏览显示K单位seo网站案例
  • 河南建设教育中心网站门户网站建设方案公司
  • 嘉兴英文网站建设揭阳制作公司网站
  • 网站被k怎么解决网站广告是内容营销吗
  • 体育类网站模板网页录制视频教程
  • 网站建设公司专业制作个网站需要多少钱
  • 企业网站群建设方案怎样用数据库做网站
  • 北京定制网站建设公司自媒体是做什么的
  • 做网站流量怎么赚钱吗河南省新闻奖
  • 英文网站翻译怎么做呢打开小程序入口直接进入
  • 万盛经开区建设局官方网站上海专业网站建设排行
  • php网站建设课程作业网站友情链接是什么
  • 还没做域名解析如何访问ftp的网站文件室内设计学费一般多少
  • 网站建设实训报告目的设计摄影作品
  • 网站建设的技术支持论文有什么知名网站是用织梦做的
  • 某网站做参考文献的书写有需要网站建设网站推广请找我
  • 手机网站自适应布局怎么做济南网站制作策划
  • 河北省建设厅网站官网成都seo技术经理
  • 阿里云服务器的网站备案流程图怎么上传网站模板
  • saas系统哪个公司做的最好seo3分子的立体构型
  • 记事本做网站如何排版功能型网站建设时间
  • 企业建设网站优势建立什么指标体系和评价程序规范
  • 专业简历制作网站推荐任何查询网站有没有做404