这篇Spring创建对象的方式及Spring配置的笔记你真得好好看看,讲的太细了

196 阅读1分钟

1、Spring创建对象的方式

1.1、通过无参构造方式创建

  1. User.java
public class User {

   private String name;

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

   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">

   <bean id="user" class="com.lkb.pojo.User">
       <property name="name" value="lkb"/>
   </bean>

</beans>

  1. 测试类
@Test
public void test(){
   ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
   //在执行getBean的时候, user已经创建好了 , 通过无参构造
   User user = (User) context.getBean("user");
   //调用对象的方法 .
   user.show();
}

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

2.2、通过有参构造方式创建

1、UserT . java

public class UserT {

   private String name;

   public UserT(String name) {
       this.name = name;
  }

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

   public void show(){
       System.out.println("name="+ name );
  }

}

2、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">

    <!-- 第一种根据index参数下标设置 -->
    <bean id="userT1" class="com.lkb.pojo.UserT">
        <!-- index指构造方法 , 下标从0开始 -->
        <constructor-arg index="0" value="lkb"/>
    </bean>
    <!--第二种根据参数名字设置 -->
    <bean id="userT2" class="com.lkb.pojo.UserT">
        <!-- name指参数名 -->
        <constructor-arg name="name" value="lkb"/>
    </bean>
    <!--第三种根据参数类型设置(不推荐使用) -->
    <bean id="userT3" class="com.lkb.pojo.UserT">
        <constructor-arg type="java.lang.String" value="lkb"/>
    </bean>
</beans>

3、测试

@Test
public void testT(){
   ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
   UserT user = (UserT) context.getBean("userT");
   user.show();
}

结论:在配置文件加载的时候。其中管理的对象都已经初始化了

2、Spring配置

2.1、别名

    <bean id="userT1" class="com.lkb.pojo.UserT">
        <constructor-arg index="0" value="lkb"/>
    </bean>
    <!--alias 给bean创建别名-->
    <alias name="userT1" alias="u1"/>

2.2、Bean的配置

 <!--id:是bean的标识符,要唯一,如果没有配置id,name就是默认标识符,
        如果配置id,又配置了name,那么name是别名
         name可以设置多个别名,可以用逗号,分号,空格隔开
         如果id和name都没配置,可以根据applicationContext.getBean(.class)获取对象;
     -->
    <bean id="userT2" class="com.lkb.pojo.UserT" name="u2,ut2">
        <!-- name指参数名 -->
        <constructor-arg name="name" value="lkb"/>
    </bean>

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

2.3、import

import相当于对配置文件的合并,当我们有多个Spring配置文件时,可以通过import对配置文件进行合并,合并后Bean就可以相互调用了。

<import resource="{path}/beans.xml"/>

最后

感谢你看到这里,看完有什么的不懂的可以在评论区问我,觉得文章对你有帮助的话记得给我点个赞,每天都会分享java相关技术文章或行业资讯,欢迎大家关注和转发文章!