• Spring(三)


    2.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.kuang.pojo.User">    
           <property name="name" value="kuangshen"/>
       </bean>
    </beans>

    3、测试类

    @Testpublic 
    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.kuang.pojo.UserT">
       <!-- index指构造方法 , 下标从0开始 -->  
       <constructor-arg index="0" value="kuangshen2"/>
    </bean>

    <!-- 第二种根据参数名字设置 -->
    <bean id="userT" class="com.kuang.pojo.UserT">
       <!-- name指参数名 -->  
       <constructor-arg name="name" value="kuangshen2"/>
    </bean>

    <!-- 第三种根据参数类型设置 -->
    <bean id="userT" class="com.kuang.pojo.UserT">
       <constructor-arg type="java.lang.String" value="kuangshen2"/>
    </bean>

    3、测试

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

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

    3、Spring配置

    3.1 别名

    alias 设置别名 , 为bean设置别名 , 可以设置多个别名()

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

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

    3.3 import

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

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

     

    4、依赖注入

    4.1 构造器注入

    前面已经说过了

    4.2 Set方式注入 【重点】

    • 依赖注入:Set注入

      • 依赖:bean对象的创建依赖于容器

      • 注入:bean对象中的所有属性,由容器来注入

    模拟环境搭建

    1.两个实体类

    package com.alice.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 Properties info;
       private String wife;

       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 Properties getInfo() {
           return info;
      }

       public void setInfo(Properties info) {
           this.info = info;
      }

       public String getWife() {
           return wife;
      }

       public void setWife(String wife) {
           this.wife = wife;
      }
    }
    package com.alice.pojo;

    public class Address {
       private String address;

       public String getAddress() {
           return address;
      }

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

     

    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">
       <!--使用Spring来创建对象,在Spring中这些都称为Bean
    //bean就是java对象 , 由Spring创建和管理
      类型 变量名 = new 类型();// Hello hello = new hello();
    id -> 变量名
      class -> new 的对象
    property -> 给对象中的属性(//成员变量)设置一个值
    -->
       <bean id="address" class="com.alice.pojo.Address">
           <property name="address" value="111"/>
       </bean>
       
       <bean id="student" class="com.alice.pojo.Student">
           <!--普通注入-->
           <property name="name" value="alice"/>

           <!--Bean注入-->
           <property name="address" ref="address"/>

           <!--数组注入-->
           <property name="books">
               <array>
                   <value>java</value>
                   <value>javaweb</value>
                   <value>Spring</value>
               </array>
           </property>

           <!--List-->
           <property name="hobbys">
               <list>
                   <value>1</value>
                   <value>2</value>
                   <value>3</value>
               </list>
           </property>

           <!--Map-->
           <property name="card">
               <map>
                   <entry key="id" value="123456"/>
                   <entry key="pwd" value="123456"/>
               </map>
           </property>

           <!--Set-->
           <property name="games">
               <set>
                   <value>CF</value>
                   <value>LOL</value>
                   <value>GTA</value>
               </set>
           </property>

           <!--null-->
           <property name="wife">
               <!--
    -->
               <null/>
           </property>

           <!--Properties-->
           <property name="info">
               <props>
                   <prop key="学号">20190526</prop>
                   <prop key="username">root</prop>
                   <prop key="password">root</prop>
               </props>
           </property>
       </bean>
    </beans>

    3.测试

    import com.alice.pojo.Student;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;

    import java.applet.AppletContext;

    public class MyTest {
       public static void main(String[] args) {
           ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
           Student student=(Student) context.getBean("student");
           System.out.println(student.getBooks());
           for (String book : student.getBooks()) {
               System.out.println(book);
          }
      }
    }
  • 相关阅读:
    vue导入excel表格
    正则表达式:输入六位数或六位数以下的正整数。
    iview下拉框支持多选
    vue通过jquery方式获取元素
    获取对象属性
    原生JS获取元素,添加事件
    打印当前页面,关闭当前页面
    Andrew Ng 机器学习公开课
    机器学习4《朴素贝叶斯》
    机器学习3《数据集与k-近邻算法》
  • 原文地址:https://www.cnblogs.com/ltw222/p/14910159.html
Copyright © 2020-2023  润新知