Spring学习(3)——IOC创建对象的方式及Spring配置

IOC创建对象的方式

通过无参构造方法来创建(默认)

  1. User.java
public class User {
    private String name;

    public User(){
        System.out.println("User无参构造方法");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void show(){
        System.out.println("name="+name);
    }
}
  1. beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--使用Spring来创建对象-->
    <bean id="user" class="site.duing.pojo.User">
        <property name="name" value="张三"/>
    </bean>

</beans>
  1. 测试
@Test
public void test(){
    ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
    User user = (User) context.getBean("user");
    user.show();
}

在这里插入图片描述

  • 结果可以发现,在调用show方法之前,User对象已经通过无参构造初始化了

通过有参构造方法来创建

  1. UserT.java
public class UserT {
    private String name;

    public UserT(String name){
        System.out.println("UserT有参构造方法");
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void show(){
        System.out.println("name="+name);
    }
}
  1. beans.xml 有三种方式编写
<!-- 第一种根据index参数下标设置 -->
<bean id="userT" class="site.duing.pojo.UserT">
   <!-- index指构造方法 , 下标从0开始 -->
   <constructor-arg index="0" value="李四"/>
</bean>
<!-- 第二种根据参数名字设置 -->
<bean id="userT" class="site.duing.pojo.UserT">
   <!-- name指参数名 -->
   <constructor-arg name="name" value="李四"/>
</bean>
<!-- 第三种根据参数类型设置,不建议使用 -->
<bean id="userT" class="site.duing.pojo.UserT">
   <constructor-arg type="java.lang.String" value="李四"/>
</bean>
  1. 测试
@Test
public void test(){
   ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
   UserT userT = (UserT) context.getBean("userT");
   userT.show();
}

在这里插入图片描述

  • 发现:虽然没有调用User类,但是也创建了User对象
  • 结论:在配置文件加载的时候。其中管理的对象都已经初始化了

Spring配置

别名

  • alias设置别名 , 为bean设置别名 , 可以设置多个别名
<!--设置别名:在获取Bean的时候可以使用别名获取-->
<alias name="userT" alias="userNew"/>

Bean的配置

<!--bean就是java对象,由Spring创建和管理-->

<!--
   id 是bean的标识符,要唯一,如果没有配置id,name就是默认标识符
   如果配置id,又配置了name,那么name是别名
   name可以设置多个别名,可以用逗号,分号,空格隔开
   如果不配置id和name,可以根据applicationContext.getBean(.class)获取对象;

   class是bean的全限定名=包名+类名
-->
<bean id="hello" name="hello2 h2,h3;h4" class="site.duing.pojo.Hello">
   <property name="name" value="Spring"/>
</bean>

import

  • 一般用于团队来发使用,他可以将多个配置文件导入合并为一个
  • 假设,现在项目中有如下三个人开发,这三个人复制不同的类开发,不同的类需要注册在不同的bean中,我们乐意利用import将所有人的beans.xml合并为一个总的
  • 张三
  • 李四
  • 王五
  • applicationContext.xml
<import resource="{path}/beans1.xml"/>
<import resource="{path}/beans2.xml"/>
<import resource="{path}/beans3.xml"/>
  • 使用的时候,直接使用总的这个applicationContext.xml
    配置文件就行了

下一篇:《Spring学习(4)——DI依赖注入》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值