Spring学习02

JAVA学习网 2020-12-08 06:00:40

4、IOC创建对象方式

 

通过无参构造方法来创建

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 );
}

}

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

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

</beans>

3、测试类

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

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

 

通过有参构造方法来创建

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 有三种方式编写

<!-- 第一种根据index参数下标设置 -->
<bean id="userT" class="com.chen.pojo.UserT">
  <!-- index指构造方法 , 下标从0开始 -->
  <constructor-arg index="0" value="kuangshen2"/>
</bean>
<!-- 第二种根据参数名字设置 -->
<bean id="userT" class="com.chen.pojo.UserT">
  <!-- name指参数名 -->
  <constructor-arg name="name" value="kuangshen2"/>
</bean>
<!-- 第三种根据参数类型设置 -->
<bean id="userT" class="com.chen.pojo.UserT">
  <constructor-arg type="java.lang.String" value="kuangshen2"/>
</bean>

3、测试

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

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

 

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="com.kuang.pojo.Hello">
  <property name="name" value="Spring"/>
</bean>

import

团队的合作通过import来实现 .

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

 

5、依赖注入(Dependency Injection,DI)

概念

  • 依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 .

  • 注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 .

Set 注入 (重点)

要求被注入的属性 , 必须有set方法 , set方法的方法名由set + 属性首字母大写 , 如果属性是boolean类型 , 没有set方法 , 是 is .

 

创建环境

Student类

package com.chen.pojo;

import java.util.*;

public class Student {
   private String name;
   private Address address;
   private String[] books;
   private List<String> hobbys;
   private Map<String,String> card;
   private Set<String> games;
   private String wife;
   private Properties info;

   public String getName() {
       return name;
  }

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

   public Address getAddress() {
       return address;
  }

   public void setAddress(Address address) {
       this.address = address;
  }

   public String[] getBooks() {
       return books;
  }

   public void setBooks(String[] books) {
       this.books = books;
  }

   public List<String> getHobbys() {
       return hobbys;
  }

   public void setHobbys(List<String> hobbys) {
       this.hobbys = hobbys;
  }

   public Map<String, String> getCard() {
       return card;
  }

   public void setCard(Map<String, String> card) {
       this.card = card;
  }

   public Set<String> getGames() {
       return games;
  }

   public void setGames(Set<String> games) {
       this.games = games;
  }

   public String getWife() {
       return wife;
  }

   public void setWife(String wife) {
       this.wife
阅读(1549) 评论(0)