网站备案的是域名还是空间,诺邯郸网站建设,网络用语建设是什么意思,WordPress开启meme目录
面试经典题目#xff1a;
1. 什么是spring#xff1f;你对Spring的理解#xff1f;简单来说#xff0c;Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
2.什么是IoC#xff1f;你对IoC的理解#xff1f;IoC的重要性?将实例化对象的权利从程序员…
目录
面试经典题目
1. 什么是spring你对Spring的理解简单来说Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
2.什么是IoC你对IoC的理解IoC的重要性?将实例化对象的权利从程序员手上交到spring容器控制
3.IoC的三种注入方式 1、set注入 2、构造注入 3、自动装配
3.1构造方法注入构造函数注入通过构造函数来注入依赖对象。在类的构造函数中声明依赖对象的参数并在容器中配置时提供相应的依赖对象。当创建对象实例时容器会自动将依赖对象传递给构造函数完成依赖注入。
4.Spring与web容器的整合 Spring与web容器的整合过程
5.总结 前言
今天小编给大家带来一个开源框架的知识学习。希望你们看完我的这篇文章可以将提升你的一个开发的能力 面试经典题目
1. 什么是spring你对Spring的理解简单来说Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 Spring框架是 Java 平台的一个开源的全栈full-stack应用程序框架和控制反转容器实现一般被直接称为 Spring。它由Rod Johnson创建去搜索了它的资料很难想象Rod Johnson之前是学音乐。该框架的一些核心功能理论上可用于任何 Java 应用它还为基于Java企业版平台构建的 Web 应用提供了大量的拓展支持。Spring 没有直接实现任何的编程模型但它已经在 Java 社区中广为流行基本上完全代替了 企业级JavaBeansEJB模型。 目的解决企业应用开发的复杂性 功能使用基本的JavaBean代替EJB并提供了更多的企业应用功能 如下图Spring所包含的功能 关于IoCAoP介绍 控制反转IoCSpring通过IoC容器管理应用程序中的对象依赖关系。它将对象的创建、组装和管理工作交给了容器开发人员只需要关注业务逻辑的实现。 面向切面编程AOPSpring支持AOP可以将横切关注点如日志记录、事务管理等从业务逻辑中分离出来提高代码的模块化和可重用性。 2.什么是IoC你对IoC的理解IoC的重要性?将实例化对象的权利从程序员手上交到spring容器控制 好处使得横切逻辑与业务逻辑分离提高了代码的模块化和可维护性。 例如完成的需求:给客户添加一个文件上传的接口实现文件上传的功能, 客户在使用了之后觉得上传文件的速度太慢了要求提升该功能的性能,我们使用了IoC就可以方便我们的需求添加更改了。 3.IoC的三种注入方式 1、set注入 2、构造注入 3、自动装配
3.1构造方法注入 构造函数注入通过构造函数来注入依赖对象。在类的构造函数中声明依赖对象的参数并在容器中配置时提供相应的依赖对象。当创建对象实例时容器会自动将依赖对象传递给构造函数完成依赖注入。 代码演示
package com.lya.ioc;/*** author 程序猿-小李哥* site www.xiaolige.com* company 猪八戒有限集团* create 2023-08-15-14:42** 用户更改信息的接口*/
public interface UserService {public void update();
}实现类
package com.lya.ioc.service.impl;import com.lya.ioc.UserService;/*** author 程序猿-小李哥* site www.xiaolige.com* company 猪八戒有限集团* create 2023-08-15-14:44*/
public class UserServiceImpl1 implements UserService {public void update() {System.out.println(更改个人信息);// System.out.println(上传头像功能);}
}编写控制器action进行调用并编写无参和有参构造方法
package web;import com.lya.ioc.UserService;
import com.lya.ioc.service.impl.UserServiceImpl1;/*** author 程序猿-小李哥* site www.xiaolige.com* company 猪八戒有限集团* create 2023-08-15-15:19*/
public class UserAction {private UserService userService new UserServiceImpl1();public String update(){userService.update();return list;}
}定义Bean在spring.xml文件中可以使用XML配置元素来定义应用程序中的Bean对象。通过配置Bean的类路径、构造函数Spring容器可以根据配置文件中的定义来创建和管理Bean对象。
配置依赖注入spring.xml文件可以指定Bean之间的依赖关系通过配置构造函数注入将依赖的Bean (userService) 注入到目标Bean (userAction) 中实现依赖注入。这样可以实现对象之间的解耦提高代码的灵活性和可测试性。
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdbean classcom.ycxw.ioc.web.UserAction iduserActionconstructor-arg nameuserService refuserService/constructor-arg/beanbean classcom.ycxw.ioc.service.impl.UserServiceImpl1 iduserService/bean
/beans 3.2 setter方法注入 通过setter方法来注入依赖对象。在类中定义相应的setter方法并在容器中配置时使用相应的属性或标签指定依赖对象。当创建对象实例后容器会调用相应的setter方法将依赖对象注入到对象中。
示例代码 1. 修改了控制器action public class UserAction {private UserService userService;private String uname;private int age;private ListString hobby;public void test2() {System.out.println(this.uname);System.out.println(this.age);System.out.println(this.hobby);}public UserAction(String uname, int age) {super();this.uname uname;this.age age;}public UserAction() {super();}2. 修改了bean注入的方式 (property)
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdbean classcom.ycxw.ioc.web.UserAction iduserActionproperty nameuserService refuserService/propertybean classcom.ycxw.ioc.service.impl.UserServiceImpl1 iduserService/bean
/beans 3.3 接口注入自动分配 三、这里请注意byType 和 byName 的区别
1. byType按类型自动装配
在byType模式下Spring容器会根据属性的类型来查找与之匹配的Bean并将其自动注入到对应的属性上。 例如如果一个属性的类型为userServiceSpring容器会查找实现了userService接口的Bean并将其注入到该属性上。 要使用byType模式目标Bean的属性类型必须与其他Bean的类型匹配并且在容器中只能有一个匹配的Bean。 2. byName按名称自动装配
在byName模式下Spring容器会根据属性的名称来查找与之匹配的Bean并将其自动注入到对应的属性上。 例如如果一个属性名为myBeanSpring容器会查找名称为myBean的Bean并将其注入到该属性上。 要使用byName模式目标Bean的属性名称必须与其他Bean的名称匹配。 4.Spring与web容器的整合 Spring与web容器的整合过程 Why: 建模的过程是十分耗时的 解决问题 1、建模必不可少 2、建模要保证只执行一次 3、建模后期望在在每一个servlet都能够拿到Spring的上下文对象ClassPathXmlApplicationContext How: 1、监听器的初始化方法 2、Spring的上下文 要存放在tomacat上下文中 DemoServlet package com.lya.ioc.demo;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.ycx.web.UserAction;WebServlet(/springDemo)
public class DemoServlet extends HttpServlet{Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(/spring-context.xml);ClassPathXmlApplicationContext context (ClassPathXmlApplicationContext) req.getServletContext().getAttribute(springContext);UserAction userAction (UserAction) context.getBean(userAction);userAction.list();super.service(req, res);}
} 配置监听
package com.lya.ioc.listener;import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.ycx.web.UserAction;public class SpringLoadListener implements ServletContextListener{Overridepublic void contextInitialized(ServletContextEvent sce) {
System.out.println(初始化......);// 拿到Spring的上下文ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(/spring-context.xml);
// 将Spring上文保存到Tomcat上下文中ServletContext servletContextsce.getServletContext();servletContext.setAttribute(springContext, context);}}
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsdversion3.1display-nameArchetype Created Web Application/display-namelistenerlistener-classcom.ycx.ioc.listener.SpringLoadListener/listener-class
/listener/web-app 5.总结 1、Spring的作用 它是一个容器框架 用来整合其他的第三方框架 有两大核心组件IOC和aop 2、IOC的作用 特点依赖注入、控制反转 控制反转将创建对象的权利由程序员手动new对象的权利交给Spring容器 优点便于维护拥抱变化 3、依赖注入的方式 set注入 构造注入 自动装配 4、自动装配 byName:根据bean的id在Spring的上下文进行寻找 byType:根据属性接口在Spring上下文找对应的接口实现类 5、Spring与web整合