首页 > 其他分享 >Spring Framework

Spring Framework

时间:2023-10-16 20:01:18浏览次数:28  
标签:构造方法 People 对象 Spring 工厂 Framework bean 注入

一、IOC/DI

IoC(Inversion of Control)控制反转

DI(dependency injection)依赖注入

IoC/DI指的是一个过程:对象的创建仅仅通过Spring容器负责,Spring容器可以通过对象的构造方法或工厂方法进行实例化对象。在创建对象过程中,如果对象需要依赖其他对象,也可以直接在Spring容器中注入到当前对象。

整个过程中对象本身在容器中控制自己的实例化(所以叫做控制反转),通过构造方法或setter方法把依赖对象注入到属性中(所以又叫做依赖注入)。

二、Bean创建的两种方式

1. BeanFactory

  通过读取、解析配置文件中Bean的配置信息,容器通过反射使用构造方法实例化对象,默认使用无参构造。对象由容器进行管理

2. FactoryBean

2.1 静态工厂

例如:

people工厂类:

public class PeopleStaticFactory {
    private static People peo = new People();

    public static People newInstance(){
        return peo;
    }
}

配置bean:

<bean id="peo3" class="com.bjsxt.factory.PeopleStaticFactory" factory-method="newInstance"/>
  • class:静态工厂类的全限定路径

  • factory-method:静态工厂中创建bean的静态方法。

由于静态方法可以直接通过类调用,所以不用创建工厂实例。

2.2 实例工厂

例如:

people工厂类:

public class PeopleFactory {
    People peo = new People();
    public People getInstance(){
        return peo;
    }
}

配置bean:

实例工厂需要先创建工厂的实例才能调用方法。

<!-- 创建工厂实例 -->
<bean id="factory" class="com.bjsxt.factory.PeopleFactory"></bean>
<!-- factory-bean:工厂对象的id    factory-method:创建当前bean的方法名称 -->
<bean id="peo2" factory-bean="factory" factory-method="getInstance"></bean>
  • factory-bean:工厂bean的id属性值。

  • factory-method:工厂中创建bean的方法。

三、属性注入

1. 手动注入

手动注入又分为构造注入和设值注入两种方式

1.1 构造注入

构造注入是通过构造方法将属性注入,即在创建对象时就完成属性的注入。

使用构造注入要提供对应参数的构造方法。

需要注意的是,在声明了有参构造方法后,需要显式声明无参构造,否则无参构造方法将被覆盖。

配置bean:

<bean id="peo4" class="com.gsy.pojo.People">
    <constructor-arg type="int" value="1"></constructor-arg>
    <constructor-arg type="java.lang.String" value="张三"></constructor-arg>
</bean>

参数说明:
  constructor-org:
  name:参数名
  index:参数索引
  type:参数类型
 以上三个参数不是都要指定,只要能确定参数即可。
  ref:引用类型
  value:参数值

注入引用类型的属性要求该类型的对象已经被spring容器托管,即配置了对应的bean,ref指定对应bean的id即可。

1.2 设值注入

设值注入通过setter方法实现,所以要先有对象才能进行设值注入。

设值注入一般是配合无参构造一起使用,所有要同时具备无参构造和对应的setter方法。

配置bean:

<bean id="peo5" class="com.bjsxt.pojo.People">
    <property name="id" value="2"></property>
    <property name="name" value="李四"></property>
</bean>

参数说明:
  name:属性名
  value:属性值
  ref:引用类型

ref用法同1.1 构造注入

2. 自动注入

 

标签:构造方法,People,对象,Spring,工厂,Framework,bean,注入
From: https://www.cnblogs.com/giaogiaoyang/p/17768221.html

相关文章

  • Spring Boot 2.0 @ModelAttribute
    SpringBoot2.0中的注解@ModelAttribute有什么作用呢?通常情况下,我们会将@ModelAttribute注解放置在Controller中的某个方法上,那么,如果您在请求这个Controller中定义的URI时,会首先调用这个被注解的方法,并将该方法的结果作为Model的属性,然后才会调用对应URI的处理......
  • SpringCloud专题面试
    1.微服务架构优缺点1)单体应用开发的效率比较低,由于代码量大,项目启动缓慢,部署麻烦,后期难以维护。2)服务拆分分为多个小应用,提高了开发效率,降低了代码的耦合程度,不同的服务可以采用不同的语言,提高了灵活性;小的改动进行快捷部署,方便维护。3)拆分的依据原则就是高内聚低耦合,每个服......
  • java -jar命令及SpringBoot通过java -jav启动项目的过程
    本篇文章将为大家讲述关于SpringBoot项目工程完成后,是如何通过java-jar命令来启动的,以及介绍java-jar命令的详细内容,对SpringBootjava-jav启动过程感兴趣的朋友跟随小编一起看看吧本篇文章将为大家讲述关于SpringBoot项目工程完成后,是如何通过java-jar命令来启动的......
  • java-springboot和servlet的项目搭建
    1.404->启动tomcat->tomcat闪退->配置jre全局环境,重启电脑->8080端口被占用->下载太多tomcat->重新配置->还是被占用->命令行找netstat-ano|findstr80得到PID,在任务管理器找到(用PID排序会更好找)是一个java.exe,结束进程。->成功运行2.入口类3.mysql命令不生效->因为没加分号(我......
  • SpringBoot+内置Tomcat配置,参数调优,最大并发量,最大连接数
    最近在研究这块的信息,记录下一些大神的文章:SpringBoot最大连接数及最大并发数是多少???https://blog.csdn.net/weixin_44421461/article/details/132486085SpringBoot+内置Tomcat配置,参数调优,最大并发量,最大连接数https://blog.csdn.net/myyhtw/article/details/129069586Sprin......
  • Nacos源码 (7) Nacos与Spring
    SpringCloud工程可以使用Nacos作为注册中心和配置中心,配置和使用非常简单,本文将简单介绍使用方式,并分析其实现方式。SpringCloud工程集成NacosSpringCloud工程使用Nacos非常简单,只需要引入依赖、编写配置参数、在启动类上添加注解即可。引入依赖<dependencyManagement><dep......
  • springboot的学习--bean的作用域
    bean默认会在springboot项目运行即容器启动时被创建,我们可以用@Lazy注解来延迟初始化,该注解可以将bean对象的创建延迟到第一次使用时创建 我们也可以使用@Scope注解来配置作用域,如果不配置,一般是@Scope(”singleton")默认单例,而使用@Scope("prototype")配置可以在每次使用该bean的......
  • nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
    升级后,运行显示项目的时候出现下面错误2023-08-1210:57:39.174[http-nio-8080-exec-3][1;31mERROR[0;39m[36morg.jeecg.common.aspect.DictAspect:104[0;39m-json解析失败Java8date/timetype`java.time.LocalDateTime`notsupportedbydefault:addModule"com.faster......
  • nbcio-boot升级到3.1后出现online表单新增报错       nbcio-boot升级springboot、
        nbcio-boot升级springboot、mybatis-plus和JSQLParser后出现新增online表单的时候报错,如下: 2023-08-1321:18:01.292[http-nio-8080-exec-12][1;31mERROR[0;39m[36mo.jeecg.common.exception.JeecgBootExceptionHandler:69[0;39m-Handlerdispatchfailed;neste......
  • springboot结合shiro实战-身份认证
     目录环境搭建配置shiro环境总结hello,大家好,我们写任何企业级项目基本都会需要做权限,权限包含身份认证和授权。所谓身份认证,就是证明你是你。所谓授权就是明白你登录之后能干什么。现在,让我们用springboot项目入手,结合shiro框架来完成这一切。环境搭建基本信息:springboot版本:初始......