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

爱淘宝网页网站建设注册城乡规划师报考条件2022

爱淘宝网页网站建设,注册城乡规划师报考条件2022,暴风seo论坛,网站建设后台管理登陆代码Spring定义一个Bean有哪些方法#xff1f;依赖注入有哪些方法#xff1f; #xff08;1#xff09;定义Bean的方法 注解定义Bean#xff0c;Component 用于标记一个类作为Spring的bean。当一个类被Component注解标记时#xff0c;Spring会将其实例化为一个bean#xff0… Spring定义一个Bean有哪些方法依赖注入有哪些方法 1定义Bean的方法 注解定义BeanComponent 用于标记一个类作为Spring的bean。当一个类被Component注解标记时Spring会将其实例化为一个bean并将其添加到Spring容器中。 配置文件定义Bean 2依赖注入的方法 字段Field最直接地在类的字段上使用。 public class MyClass {Autowiredprivate MyDependency myDependency; }构造器Constructor在构造器上使用用于构造器注入。 public class MyClass {private MyDependency myDependency;Autowiredpublic MyClass(MyDependency myDependency) {this.myDependency myDependency;} }方法Method也可以在一个方法上使用通常是一个 setter 方法。 public class MyClass {private MyDependency myDependency;Autowiredpublic void setMyDependency(MyDependency myDependency) {this.myDependency myDependency;} }介绍IOC、AOP、反射 1IOC ​ Spring IOC容器通过 ​ ①封装对象的创建将对象的创建过程交给Spring管理从而实现了控制反转和生命周期管理管理对象的初始化和销毁过程 ​ ②使用依赖注入来解耦对象之间的依赖关系通过 Spring 容器将类 A 所依赖的 B 的实例注入到 A 中这样 A 和 B 不再直接依赖而是通过容器来提供 ​ ③利用反射和配置元数据动态地创建和管理对象当 Spring 容器启动时它会根据配置文件或注解元数据扫描类的信息通过反射技术实例化对象而不需要编写具体的 new 代码。反射让 Spring 能够动态地操作类的构造函数、方法等 ​ ④同时提供作用域管理功能对象的生命周期和可见性范围。Spring 提供了多种作用域容器会根据作用域来管理对象的实例化、销毁等过程。Singleton单例、Prototype原型、Request、Session、Application 等作用域。 2AOP ​ 面向切面编程AOP能够将那些与业务无关却为业务模块所共同调用的逻辑例如事务处理、日志管理、权限控制等封装起来以减少系统的重复代码降低模块间的耦合度。 ​ 两个例子权限校验拦截器、动态切换数据源。 ​ Spring AOP的实现依赖于动态代理技术。动态代理是在运行时动态生成代理对象而不是在编译时。 注解Aspect用于定义切面标注在切面类上。Pointcut定义切点标注在方法上用于指定连接点。Before在方法执行之前执行通知。After在方法执行之后执行通知。Around在方法执行前后都执行通知。3反射 ​ 允许在运行时动态地查询和操作类、方法、字段等信息并且能够通过反射来调用类中的方法或修改类的属性。反射机制的核心原理是通过 Class 类来获取类的结构信息并且使用这些信息在运行时动态地操作类的对象。IOC、DI、动态代理就是用到了反射。 ①获取class对象可以通过类的 Class 对象来访问类的信息。 Class? clazz Class.forName(Person); //括号里的内容可以是程序运行时才输入的内容②查询类的结构信息通过 Class 对象可以获取类的构造方法、方法、字段、接口、父类等信息。 Method[] methods clazz.getMethods(); // 获取所有公共方法 Field[] fields clazz.getFields(); // 获取所有公共字段 Constructor[] constructors clazz.getConstructors(); // 获取所有公共构造函数③动态创建对象 Constructor? constructor clazz.getConstructor(); // 获取无参构造 Object instance constructor.newInstance(); // 使用构造函数创建对象实例④调用方法 Method method clazz.getDeclaredMethod(myMethod, String.class); method.setAccessible(true); // 如果是私有方法需要设置访问权限 method.invoke(obj, parameter); // 调用方法介绍动态代理、静态代理 ​ 代理模式是设计模式中的一种它通过提供代理对象来控制对原对象的访问。代理对象充当中介通常在请求实际操作之前或之后做一些额外的工作例如检查权限、缓存结果、延迟加载等。 ​ 控制访问代理可以控制对实际对象的访问增加额外的功能如安全性、权限管理、日志记录等。 ​ 延迟加载通过代理可以延迟初始化或执行耗时的操作直到真正需要时才执行。 ​ 性能优化代理对象可以缓存结果减少重复计算或请求提高性能。 ​ 增强功能代理对象可以在不修改原对象代码的情况下为其增加新的功能如事务管理、日志记录等。 1动态代理 动态代理是在运行时创建代理对象代理对象在运行时被动态地生成因此不需要在编译时就确定代理类。Java 提供了两种方式来实现动态代理 JDK 动态代理 通过 java.lang.reflect.Proxy 类和 InvocationHandler 接口动态生成代理类。JDK 动态代理要求目标类实现一个接口。 CGLIBCode Generation Library代理 通过字节码生成技术动态创建目标类的子类来实现代理。CGLIB 代理不要求目标类实现接口而是通过继承目标类来实现代理。 2静态代理 ​ 代理类是在编译时就已经写好并且确定的。是由开发者手动编写的并且在程序运行之前就已经存在。例如你在编写代码时就知道你需要一个 Proxy 类它会代理 RealSubject 类的方法。在静态代理中代理类和目标类的关系是固定的编译时就已经确定。 ​ 代理模式是JAVA的一种设计模式而AOP是Spring框架中的一个特性是使用了动态代理来实现的。 Spring的循环依赖的原因以及解决方法众安 循环依赖指的是两个类中的属性相互依赖对方例如 A 类中有 B 属性B 类中有 A属性从而形成了一个依赖闭环。 Spring中的循环依赖问题有三种情况 第一种通过构造方法进行依赖注入时产生的循环依赖问题。第二种通过setter方法进行依赖注入且是在多例原型模式下产生的循环依赖问题。第三种通过setter方法进行依赖注入且是在单例模式下产生的循环依赖问题。 单例模式适用于全局唯一的资源管理如配置管理、日志记录、数据库连接池等。它的特点是保证类在全局范围内只有一个实例所有地方都使用同一个对象。 多例模式适用于需要多个独立实例的场景如用户会话、任务调度、订单管理等。每个实例有自己的状态和行为不共享数据。 只有【第三种方式】的循环依赖问题被 Spring 解决了其他两种方式在遇到循环依赖问题时Spring都会产生异常。 1Spring实例化BeanSpring尝试创建A的实例发现A依赖B因此需要实例化B。Spring在创建B时发现B依赖A但此时A还没有完成初始化所以Spring会创建A的空对象并将其放入singletonObjects一级缓存中并开始创建B。 3循环依赖暴露 当Spring尝试创建B时由于A还没有完全初始化Spring会把A实例未完全初始化提前暴露到earlySingletonObjects二级缓存中这时A成为一个半初始化的Bean。B可以通过earlySingletonObjects二级缓存获得这个提前暴露的A对象从而完成B的依赖注入。 3初始化Bean 依赖注入完成后Spring继续初始化B如调用PostConstruct等然后将B放入三级singletonFactories缓存中表示B已经完全初始化。 Spring继续完成A的初始化工作注入B完成生命周期的其他部分并将A放入三级singletonFactories缓存中表示A也已经完全初始化。 4总结 在依赖注入过程中Spring通过earlySingletonObjects二级缓存提供了B对A的依赖通过singletonFactories三级缓存提供了A对B的依赖从而打破了循环依赖。 列举几个Spring常用的注解美团 注解作用Autowired自动装配bean当Spring容器中存在与要注入的属性类型匹配的bean时它会自动将bean注入到属性中ComponentSpring会将一个类实例化为一个bean并将其添加到Spring容器中。Configuration用于标记一个类作为Spring的配置类配置类可以包含Bean注解的方法用于定义和配置bean作为全局配置。Bean用于标记一个方法作为Spring的bean工厂方法当一个方法被Bean注解标记时Spring会将该方法的返回值作为一个bean,并将其添加到Spring容器中Service用于标记服务层的bean是Component注解的特例一般标记在业务service的实现类。Repository用于标记数据访问层的bean,它也是Component注解的特例。Controller用于标记控制层的bean它也是Component注解的特例。 spring、springboot、SpringMVC的区别及关系康泰 Spring 是一个全面的应用开发框架提供了全面的基础设施和功能支持。 Spring MVC 是 Spring 框架中的一个模块专门用于 Web 开发采用 MVC 模式来处理 Web 请求和响应。它依赖于 Spring 框架的核心功能如 IoC 和 AOP。 Spring Boot 是一个基于 Spring 的项目它封装了 Spring 和其他相关技术如 Spring MVC、Spring Data、Spring Security 等提供自动配置、快速项目启动器、内嵌服务器三大功能使开发者能够快速启动和构建 Spring 应用。 自动配置快速项目启动器通过引入不同的 Starter可以快速集成常用的框架和库如数据库、消息队列、Web 开发等极大地提高了开发效率。内嵌服务器Tomcat、Jetty、Undertow无需额外配置即可将应用打包成可执行的 JAR 文件方便部署和运行。 SpringSpring MVC Spring Boot springboot的自动配置原理美团、得物springBoot启动机制启动之后做了哪些步骤B站 SpringBoot重要注解 SpringBootApplication用于标注主应用程序类标识一个Spring Boot应用程序的入口点同时启用自动配置和组件扫描。Controller标识控制器类处理HTTP请求。RestController结合Controller和ResponseBody返回RESTful风格的数据。Service标识服务类通常用于标记业务逻辑层。Repository标识数据访问组件通常用于标记数据访问层。Component通用的Spring组件注解表示一个受Spring管理的组件。Autowired用于自动装配Spring Bean。Value用于注入配置属性值。RequestMapping用于映射HTTP请求路径到Controller的处理方法。GetMapping、PostMapping、PutMapping、DeleteMapping简化RequestMapping的GET、POST、PUT和DELETE请求。Configuration用于指定一个类为配置类其中定义的bean会被Spring容器管理。 怎么用原生的MyBatis去查询 1配置MyBatis 在配置文件中配置数据源、MyBatis的Mapper文件位置等信息。 2创建实体类创建与数据库表对应的实体类字段名和类型需与数据库表保持一致。 public class User {private Long id;private String username,private String email,// Getters and setters }3编写SQL映射文件在resources目录下创建XML文件定义SQL语句和映射关系。 mapper namespacecom.example.dao.UserMapperselect idselectUserById resultTypecom.example.model.UserSELECT * FROM users WHERE id #{id}/select /mapper4编写DAO接口创建DAO接口定义查询方法。 public interface UserMapper {User selectUserById(Long id); }5编写具体的SQL查询语句在XML文件中编写对应的SQL语句。 6调用查询方法在服务层或控制层中调用DAO接口中的方法进行查询。 // 在Service层中调用 User user userMapper.selectUserById(1);MyBatis里的 # 和 $ 的区别? Mybatis 在处理 #{}时会创建预编译的 SQL 语句将 SQL 中的 #{} 替换为?号在执行 SQL 时会为预编译 SQL 中的占位符(?)赋值调用 PreparedStatement 的 set 方法来赋值预编译的 SQL 语句执行效率高并且可以防止SQL注入提供更高的安全性适合传递参数值。 Mybatis 在处理 ${} 时只是创建普通的 SQL语句然后在执行 SQL语句时 MvBatis 将参数直接拼入到 SQL里不能防止 SQL注入因为参数直接拼接到 SQL语句中如果参数未经过验证、过滤可能会导致安全问题。 比如 select idgetUserByUsername resultTypeUserSELECT * FROM users WHERE username ${username} /select在这个查询中${username} 会直接被传入的 username 值替换假如传入的 username 是恶意的例如 OR 11查询语句就变成了 SELECT * FROM users WHERE username OR 11这就是典型的 SQL 注入因为 $ 直接拼接了参数值导致不安全的 SQL 被执行。 大多数情况下都应该使用 #特别是涉及到用户输入的值时。它可以安全地处理用户输入避免 SQL 注入。只有在确实需要拼接动态 SQL 的结构部分如表名、列名时才应该使用 $。 MybatisPlus和Mybatis的区别百度 MybatisPlus是一个基于MyBatis的增强工具库。 CRUD操作:MybatisPlus通过继承BaseMapper接口提供了一系列内置的快捷方法使得CRUD操作更加简单无需编写重复的SQL语句。代码生成器:MvbatisPlus提供了代码生成器功能可以根据数据库表结构自动生成实体类、Mapper接口以及XML映射文件减少了手动编写的工作量。通用方法封装:MybatisPlus封装了许多常用的方法如条件构造器、排序、分页查询等简化了开发过程提高了开发效率。分页插件:MybatisPlus内置了分页插件支持各种数据库的分页查询开发者可以轻松实现分页功能而在传统的MyBatis中需要开发者自己手动实现分页逻辑。多租户支持:MvbatisPlus提供了多租户的支持可以轻松实现多租户数据隔离的功能。注解支持:MvbatisPlus引入了更多的注解支持使得开发者可以通过注解来配置实体与数据库表之间的映射关系减少了XML配置文件的编写。
http://www.dnsts.com.cn/news/226817.html

相关文章:

  • 江西网站建设公司联系方式苏州网站营销公司简介
  • 展示型网站建设流程方案商城网站制作
  • 定西市城乡建设局网站提供大良网站建设
  • 网站建设 阿里巴巴旗下贡井移动网站建设
  • 福田企业网站推广哪里好百度seo高级优化
  • 公明做企业网站广州营销型网站建设团队
  • 什么网站可以做锦鲤活动郑州三附院不孕不育科专家
  • 外贸网站有哪些平台蛋糕电子商务网站建设方案
  • 建湖做网站哪家公司好自己做网站 最好的软件下载
  • 江门网站平台建设简历免费模板可编辑word
  • 做苗木生意上什么网站软件公司招聘最新信息
  • 江门专业网站制作费用推广优化seo
  • 网站域名如何注册天津和平做网站哪家好
  • 高端网站设计企业网站建设免费开放代理
  • 网站建设与维护目录申请微官网的网站
  • wordpress企业站教程昌黎县城乡建设局网站
  • 网站管理制度建设的情况互联网服务行业有哪些
  • 义乌门户网站建设云主机试用
  • ps做网站效果图都是按几倍做域名备案进度查询
  • php彩票网站建设源码网站如何改造wap
  • 网站建设 添加本地视频教程微信的网站怎么做
  • 只有做推广才能搜索到网站吗不良网站进入窗口
  • 网站建设教程流程图php 公司网站源码
  • wordpress 建站后端驻马店 网站建设
  • 重庆网站制作工作室动漫制作专业大一需不需要买电脑
  • 企业网站相关案例汕头哪里做网站
  • 兰州网站建设流程网站建设的参考文献英文
  • 知名的集团门户网站建设费用影视制作宣传片公司
  • 网站邮箱验证怎么做一站式做网站技术
  • 建网站基础需要学什么一个网站开发周期