IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringDay2 -> 正文阅读

[Java知识库]SpringDay2

Spring-Day2

1.1、Hello Spring(XML配置文件)

  • 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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--使用Spring创建对象,在Spring中称为Bean
        id = 变量名
        class = 权限定类名 创建的对象
        核心调用set方法
    -->
    <bean id="userDaoImpl" class="com.wzw.dao.UserDaoImpl"/>
    <bean id="userServiceImpl" class="com.wzw.service.UserServiceImpl">
        <!--        ref:引用Spring容器中创建好的对象-->
        <property name="userDao" ref="userDaoImpl"/>
    </bean>
</beans>
  • Test测试
    @Test
    void testGetUser() {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        UserService userService = (UserService) context.getBean("userServiceImpl");
        userService.getUser();
    }

通过 **ApplicationContext context = new ClassPathXmlApplicationContext(“beans.xml”)**读取配置文件。

1.2、IOC(控制反转)创建对象的方式

  • 使用无参构造方法创建对象。如果直接采用采用有参构造方法创建对象则报错!
    public User() {
        System.out.println("使用无参构造方式创建对象!");
    }
    <bean id="user" class="com.wzw.pojo.User">
        <property name="name" value="王智威"/>
    </bean>
    @Test
    void testGetUser() {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        User user = (User) context.getBean("user");
    }
  • 使用有参构造方法创建对象

        public User(String name) {
            this.name = name;
        }
    
        @Test
        void testGetUser() {
            ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
            User user = (User) context.getBean("user");
            user.show();
        }
    
    • 通过下标实现
        <bean id="user" class="com.wzw.pojo.User">
            <constructor-arg index="0" value="王智威"/>
        </bean>
    
    • 通过参数的类型传递

    基本类型可以直接用,引用类型需要全限定类名

    不建议使用(例如多个String)

        <bean id="user" class="com.wzw.pojo.User">
            <constructor-arg type="java.lang.String" value="王智威"/>
        </bean>
    
    • 直接通过参数名设置
        <bean id="user" class="com.wzw.pojo.User">
            <constructor-arg name="name" value="王智威"/>
        </bean>
    

Spring中无论调用不,bean中所有的对象都被创建了,通过getBean("")方法引用时,引用的是同一对象。

总结:在配置文件加载的时候,容器中管理的对象就已经初始化了。

1.3、Spring配置

  • alias(起别名)原名和别名都可以使用
<alias name="user" alias="user2"/>
  • bean
    <!--    id : bean的唯一标识符,相当于对象名
            class : bean对象所对应的全限定名:包名+类型
            name : 也可作为别名使用,name可以同时取多个别名
    -->
    <bean id="user" class="com.wzw.pojo.User" name="user3 user4">
        <constructor-arg name="name" value="王智威"/>
    </bean>
  • import 一般用于团队开发中 利用import将多个配置文件合并到一个,使用的时候采用核心配置文件就好
<import resource="beans.xml"/>

1.4、依赖注入

1.4.1 构造器注入

上面已经说过了

1.4.2 Set方式注入【重点】

  • 依赖注入:set注入!
    • 依赖:bean对象的创建依赖于容器!
    • 注入:bean对象中所有属性,由容器来创建!

【环境搭建】

  1. Student.java 真实测试对象
package com.wzw.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 wifer;
    private Properties info;

    public Student() {
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", address=" + address +
                ", books=" + Arrays.toString(books) +
                ", hobbys=" + hobbys +
                ", card=" + card +
                ", games=" + games +
                ", wifer='" + wifer + '\'' +
                ", info=" + 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 getWifer() {
        return wifer;
    }

    public void setWifer(String wifer) {
        this.wifer = wifer;
    }

    public Properties getInfo() {
        return info;
    }

    public void setInfo(Properties info) {
        this.info = info;
    }
}
  1. Address.java 复杂测试对象
package com.wzw.pojo;

public class Address {
    private String address;

    public Address(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Address{" +
                "address='" + address + '\'' +
                '}';
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}
  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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--使用Spring创建对象,在Spring中称为Bean
        id = 变量名
        class = 权限定类名 创建的对象
        核心调用set方法
    -->
    <bean id="userDaoImpl" class="com.wzw.dao.UserDaoImpl"/>
    <bean id="userServiceImpl" class="com.wzw.service.UserServiceImpl">
        <!--        ref:引用Spring容器中创建好的对象-->
        <property name="userDao" ref="userDaoImpl"/>
    </bean>
    <!--    id : bean的唯一标识符,相当于对象名
            class : bean对象所对应的全限定名:包名+类型
            name : 也可作为别名使用,name可以同时取多个别名
    -->
    <bean id="user" class="com.wzw.pojo.User" name="user3 user4">
        <constructor-arg name="name" value="王智威"/>
    </bean>
    <alias name="user" alias="user2"/>

    <bean id="student" class="com.wzw.pojo.Student">
        <property name="name" value="王智威"/>
    </bean>
</beans>
  1. 测试类Test
    @Test
    void testStudnt() {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        Student student = (Student) context.getBean("student");
        System.out.println(student.getName());
    }
  1. 完善注入信息
<bean id="address" class="com.wzw.pojo.Address">
        <property name="address" value="河南工业大学"/>
    </bean>
    <bean id="student" class="com.wzw.pojo.Student">
        <!-- 第一种注入方式:普通值注入 value-->
        <property name="name" value="王智威"/>
        <!-- 第二种注入方式:Bean注入 ref-->
        <property name="address" ref="address"/>
        <!-- 第三种注入方式:数组注入 array-->
        <property name="books">
            <array>
                <value>宫楼梦</value>
                <value>西游记</value>
                <value>三国演义</value>
            </array>
        </property>
        <!-- 第四种注入方式:List注入 list-->
        <property name="hobbys">
            <list>
                <value>听歌</value>
                <value>看电影</value>
                <value>打游戏</value>
                <value>阅读</value>
            </list>
        </property>
        <!-- 第五种注入方式:Map注入 map-->
        <property name="card">
            <map>
                <entry key="身份证" value="410426388874362512"/>
                <entry key="银行卡" value="4673826388874362512"/>
            </map>
        </property>
        <!-- 第六种注入方式:Set注入 set-->
        <property name="games">
            <set>
                <value>LOL</value>
                <value>王者荣耀</value>
                <value>DNF</value>
            </set>
        </property>
        <!-- 第七种注入方式:Null注入-->
        <property name="wifer">
            <null/>
        </property>
        <!-- 第八种注入方式:Properties注入-->
        <property name="info">
            <props>
                <prop key="学号">201916040419</prop>
                <prop key="姓名">王智威</prop>
                <prop key="性别"></prop>
            </props>
        </property>
    </bean>
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 20:59:25  更:2022-02-14 21:02:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:57:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码