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
















