spring学习笔记(一)创建对象的四种方式

一、简介

Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。

所谓IoC就是Iversion of Control,控制反转,以前在写Java程序的时候,如果要使用一个对象,我们必须手动new一个,当然,自己的对象还是要自己找(手动狗头),在spring框架中,所有对象的创建都交给容器,不再需要手动创建,这一点的好处在普通的编程中可能体会不到,直接new一个对象咋啦,但是试想一下,很多时候,比如在进行数据库连接操作的时候,我们需要创建好几层对象,才能引出我们最后需要的对象,更不要说在企业级的开发中了,而在spring容器框架中,这些工作,spring帮我们创建好了对象,当我们需要的时候,只需要在容器中取即可。

值得一提的是,spring默认在项目启动的时候就会创建所有对象,不论我们是否调用,如果想验证的话,只需要在构造函数中加一句输出即可。

spring创建对象的方式分为无参构造函数和有参构造函数,spring既可以通过无参构造函数创建对象,也可以通过有参构造函数创建对象,默认使用的是无参构造函数,如果使用有参构造函数的话,需要我们自己声明。

二、实现方式

1.环境

创建对象

首先,创建了一个User类作为spring容器的创建对象

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
public class User {
    private String name;
    private int age;
    public User(){
        System.out.println("这是空参构造函数");
    }

    public User(String name, int age) {
        System.out.println("这是全参数的构造函数");
         = name;
        this.age = age;
    }

}
创建spring配置文件模板
<?xml version="1.0" encoding="UTF-8"?>
<!--suppress SpringFacetInspection -->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://www.springframework.org/schema/beans"

       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
">

   

</beans>

以上是实现的环境,配置文件中没有任何配置。

2.无参构造函数实现

  • 在配置文件中写入
<bean id="user" class="top.zhang.pojo.User"></bean>

这个时候便是默认使用无参构造函数构造

  • 测试
public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    User user = context.getBean("user", User.class);
    System.out.println(user.toString());

}

此时,对user对象进行输出的时候name = null,age = 0,因为无参构造函数没有进行属性的初始化。

3.有参构造函数的实现

实现方式一
<bean id="user" class="top.zhang.pojo.User">
    <constructor-arg index="0" value="张家瑞"></constructor-arg>
    <constructor-arg index="1" value="10"></constructor-arg>
</bean>

这个时候是使用有参构造函数,index表示属性的编号,0表示第一个,也就是name,而1表示第二个,也就是age,此时进行测试,成功进行了对象的创建以及属性的初始化。

实现方式二
<bean id="user" class="top.zhang.pojo.User">
    <property name="name" value="张家瑞"></property>
   <property name="age" value="20"></property>
</bean>

如上,直接使用属性名实现对象属性初始化的方式,更加易于理解和记忆,测试之后成功显示相关信息。

实现方式三
<bean id="user" class="top.zhang.pojo.User">
   <constructor-arg type="java.lang.String" value="张家瑞"></constructor-arg>
    <constructor-arg type="int" value="30"></constructor-arg>
</bean>

如上,这是根据属性的类型进行赋值,值得注意的是,类型必须写全称,比如上面的String,,此时,同样实现了对于属性的赋值。

三、总结

以上,实现了Spring创建对象的四种方式,分别是无参构造函数、有参构造函数的属性序列、有参构造函数的属性名以及有参构造函数的类型,一般来说,无参构造和有参属性名构造比较常用,但是具体选择还是要大家自己定。