首页 > 其他分享 >Spring知识回顾

Spring知识回顾

时间:2024-03-08 15:57:36浏览次数:24  
标签:UserDao 回顾 Spring 知识 bean UserService userDao public

首先对于我们来说Spring是什么,Spring可以让我们对刚开始写项目时,有一个明确的框架结构,用比较专业的话来讲,就是使用IOC和AOP,即Inversion of control控制反转和Aspect Oriented Programming面向切面编程,总结:Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。

学习IOC的组成结构:

  1. Dao 接口
  2. DaoImpl 接口实现类
  3. service 业务接口
  4. ServiceImpl 业务实现类

使用IOC的好处在,对象的创建本来由程序自己控制,后面变成了交给用户来自己控制

他是一种编程思想,由主动的编程变成被动的接收

private UserDao userDao;
//利用set进行动态实现值的注入
public void setUserDao(UserDao userDao){
    this.userDao = userDao;
}

接下来看一个实例:

//服务类
public interface MessageService { void sendMessage(String message); } //服务接口类 public class EmailService implements MessageService { @Override public void sendMessage(String message) { System.out.println("Email sent: " + message); } }

原本的传统编程代码

public class MyApplication {
    public static void main(String[] args) {
        MessageService service = new EmailService();
        service.sendMessage("Hello, world!");
    }
}

现在使用Spring的IOC容器来管理对象的创建和依赖关系

首先声明EmailService的bean

<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
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="messageService" class="com.example.EmailService" />

</beans>

然后,我们就可以使用Spring的IOC容器来获取EmailService对象,并调用其方法

public class MyApplication {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        MessageService service = (MessageService) context.getBean("messageService");
        service.sendMessage("Hello, world!");
    }
}

MyApplication 类不再负责直接创建 EmailService 对象,而是通过 Spring 的 IOC 容器通过bean来获取对象。通过这种方式,对象的创建和依赖关系被外部容器管理,实现了IOC控制反转。如果以后要更改使用的消息服务,只需要修改 Spring 配置XML文件,而不需要修改 MyApplication 类的代码,实现解耦合。

但是我们一般直接使用@Configuration@Bean 注解来替代 XML 配置文件。

@Configuration 注解用于标识一个 Java 类为 Spring 的配置类,而 @Bean 注解用于声明一个方法为一个 Spring 管理的 bean。

接下来看看使用注解的例子:

@Configuration
public class AppConfig {

    @Bean
    public UserService userService() {
        return new UserService(userDao());
    }

    @Bean
    public UserDao userDao() {
        return new UserDao();
    }
}
  1. @Configuration 注解告诉 Spring 这个类是一个配置类,Spring 将会在启动时读取这个类,并根据其中的配置来创建和管理 bean。

  2. @Bean 注解告诉 Spring 这个方法将返回一个 bean,并且这个 bean 将会被 Spring 管理。在 AppConfig 类中,我们声明了两个方法并用 @Bean 注解标记它们,分别是 userService()userDao()

    • userService() 方法返回一个 UserService 对象,并且这个对象需要一个 UserDao 对象作为构造函数的参数。Spring 将会自动调用 userDao() 方法来获取 UserDao 对象,并传递给 UserService 的构造函数,从而创建 UserService 的实例。

    • userDao() 方法返回一个 UserDao 对象。因为我们在 userService() 方法中引用了 userDao() 方法,Spring 将会先创建 UserDao 的 bean,然后再创建 UserService 的 bean,确保 UserService 能够获取到正确的 UserDao 实例。

优点:

  1. 松耦合和可维护性:使用 @Configuration@Bean 注解可以将应用程序的配置信息集中在一个或多个配置类中,而不是分散在多个 XML 文件中。这样做可以使得应用程序的组件之间的依赖关系更加清晰,代码结构更加模块化,易于理解和维护。

  2. 依赖注入:Spring 框架提供了强大的依赖注入机制,可以自动将依赖的对象注入到需要的地方。在上面的例子中,UserService 类需要一个 UserDao 对象来执行数据库操作,通过 @Bean 注解声明 UserDao 的 bean,Spring 将会自动创建 UserDao 的实例,并将它注入到 UserService 中。这种依赖注入的方式可以减少代码的耦合度,使得组件之间的关系更加灵活。

 

 

 

 

 

 

 

 

 

标签:UserDao,回顾,Spring,知识,bean,UserService,userDao,public
From: https://www.cnblogs.com/1764782550-rzs/p/18060757

相关文章

  • springboot项目接入普罗米修斯
    为了更好查询项目的运行状态,这次引入普罗米修斯监控pom依赖<!--starter-actuator--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency><!--下面是/actuato......
  • springboot 2.4.0 启动源码分析
    SpringBoot启动的基本配置SpringBoot启动的配置主要有以下两个部分添加依赖最基本的springboot依赖只需要添加一个springboot启动器的依赖即可,如果是web服务则添加web的启动器<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"......
  • springboot整合nacos注册中心和配置中心
    我的命名空间是centos效果图   可以是yml格式,名称不要变springboot版本2.1.6pom依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchem......
  • Spring boot常用命令总结
    1.打包jar包mvnpackageclean-Dmaven.test.skip=truemvnpackage-Dmaven.test.skip=true2.结束当前运行的程序ps-aux|grepjavakill-9$(ps-ef|grep/usr/bin/chromedriver|grep-vgrep|awk'{print$2}')kill-9$(ps-ef|grep/opt/google/chrome/chrome|grep......
  • 网安云知识 | OWASP TOP 10之安全配置错误
    这些漏洞使攻击者能经常访问一些未授权的系统数据或功能。有时,这些漏洞导致系统的完全攻破。业务影响取决于您的应用程序和数据的保护需求。安全配置错误可能发生在应用程序堆栈的任何级别,包括网络服务、平台、Web服务器应用服务器、数据库、框架、自定义代码和预安装的虚拟机、......
  • TS快速回顾
    //定义变量leta:string//定义变量并赋值(ts有类型推断机制)letb="asd"letc:string="asd"//定义数组letarr1:number[]=[1,2,3,4]//定义对象letper:{age:number,name:string}={age:11,name:"ASD"}letper1={age:11,name:......
  • Java知识拓展
    publicclasstest3{publicstaticvoidmain(String[]args){//进制二进制0b十进制八进制0十六进制0xinti=10;inti2=010;inti3=0x10;System.out.println(i);System.out.println(i2);System.out.println(i3);System.out.println("=======......
  • SpringMVC实现文件上传&下载(2)
    文件上传步骤第一步:由于SpringMVC使用的是commons-fileupload实现,故将其组件引入项目中,这里用到的是commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar。第二步:spring-mvx中配置MultipartResolver处理器。可在此加入对上传文件的属性限制。第三步:在Controller的方法中添加M......
  • Spring-Framework6.1.x源码阅读环境搭建
    Spring-FrameWork6.1.x源码阅读环境搭建1.代码获取https://github.com/spring-projects/spring-framework.git。2.进入目录,修改目录下gradle/wrapper/gradle-wrapper.properties,看一下这里指定的gradle版本,distributionUrl=https://services.gradle.org/distributions/gradle-......
  • 【Spring RESTful】RESTful开发风格的一些细节
    传统基于MVC模式的Web应用的问题JSP返回HTML不能被app/小程序解析REST&&RESTfulRESTful传输数据客户端发送的所有请求都是url,url是用户交互入口服务端只返回JSON/XML格式数据,不包含任何的渲染内容不同的客户端接受数据之后,以自己的形式对数据进行渲染与展现RESTfu......