Spring5的学习笔记__01

Spring的简介

1、Spring是轻量级的开源的javaEE框架

2、Spring可以解决企业级应用开发的复杂性

3、Spring有俩个核心部分:IOC (控制反转)和AOP(面向切面)
(1) IOC:控制反转,对象的创建过程由Spring管理,降低耦合性
(2) AOP:面向切面,添加功能时,不用修改源码就能进行功扩展;

4、Spring的特点:

(1) 便于解耦,简化开发
(2) 支持AOP编程
(3) 方便程序测试
(4) 方便进行事务的管理
(5) 便于和其他框架的整合
(6) 降低API的开发难度

5.Spring初步使用需要的jar包
(1)IOC的基本jar包
链接:https://pan.baidu.com/s/1V5K23Z5utA6u4RG3dD9o_w
提取码:ing2

6.代码演示
(1)使用xml配置文件的方式创建对象:bean标签创建对象

<?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">
    <!--配置Uesr对象创建:方式一-->
<!--    <bean id="user" class="com.at.spring5.User"></bean> -->
</beans>

说明:id的值可以随意取,当创建ClassPathXmlApplication的实例时,用其引用调用getBean方法时的参数需要id的值;

//被测试类
public class User {
    public void add() {
        System.out.println("hello world");
    }
}
//测试类
package com.at.spring5.junit;

import com.at.spring5.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author tao
 * @version 1.0
 * @date 2020-06-23 19:14
 * @description  Spring入门演示:使用xml配置文件的方式创建对象
 * 1.ApplicationContext: 是Beanfactory的一个子接口,功能更丰富;
 * 2.Applicationcontext的俩个重要实现类:(1)ClassPathXmlApplicationContext,用于加载类路径(src)下文件,
 *                                    (2)FileSystemXmlApplicationContext.用于加载带盘符的文件。
 * 3.
 */
public class UserTest {
    @Test
    public void testAdd(){
        //1.加载spring的配置文件
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean1.xml");
      //BeanFactory context1 =
//                new ClassPathXmlApplicationContext("bean1.xml");

        //2.获取配置创建的对象
        User user = context.getBean("user", User.class);
        System.out.println(user);
        user.add();
    }

}

测试结果:
Spring5的学习笔记__01_第1张图片
(2)使用xml配置文件注入属性:property标签调用属性set方法注入属性

①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">
    <!--配置Uesr对象创建:方式一-->
<!--    <bean id="user" class="com.at.spring5.User"></bean>-->


    <!--配置Book对象创建:方式二-->
    <bean id="name" class="com.at.spring5.Book">
        <property name="bname" value="射雕英雄传"></property>
        <property name="bauthor" value="金庸"></property>
    </bean>


</beans>

②被测试类:

package com.at.spring5;

/**
 * @author tao
 * @version 1.0
 * @date 2020-06-23 21:08
 * @description
 */
public class Book {
    private String bname;
    private String bauthor;

    public void setBname(String bname) {
        this.bname = bname;
    }

    public void setBauthor(String bauthor) {
        this.bauthor = bauthor;
    }
    public void sout(){
        System.out.println(bname+"::"+bauthor);
    }
}

③测试类:

package com.at.spring5.junit;

import com.at.spring5.Book;
import com.at.spring5.Person;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import static org.junit.Assert.*;

/**
 * @author tao
 * @version 1.0
 * @date 2020-06-23 21:10
 * @description  测试spring中注入属性:
 *                                  (1)通过调用属性的set方法来注入属性
 *                                  (2)通过构造方法来注入属性
 */
public class BookTest {
    //通过调用属性的set方法来注入属性
    @Test
    public void sout() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        Book book = context.getBean("name", Book.class);
        System.out.println(book);
        book.sout();
    }
}

④测试结果:
Spring5的学习笔记__01_第2张图片
(3)使用xml配置文件注入属性:constructor-arg标签调用有参构造注入属性

①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">
    <!--配置Uesr对象创建:方式一-->
<!--    <bean id="user" class="com.at.spring5.User"></bean>-->


    <!--配置Book对象创建:方式二-->
<!--    <bean id="name" class="com.at.spring5.Book">-->
<!--        <property name="bname" value="射雕英雄传"></property>-->
<!--        <property name="bauthor" value="金庸"></property>-->
<!--    </bean>-->

    <!--配置Book对象创建:方式三,Spring创建对象时默认调用的是无参构造方法,使用有参构造时,参数配置完后,错误消失-->
    <bean id="name" class="com.at.spring5.Person">
        <constructor-arg name="pname" value="郭靖"></constructor-arg>
        <constructor-arg name="age" value="18"></constructor-arg>
    </bean>

</beans>

②被测试类

package com.at.spring5;


public class Person {
    public Person(String pname, int age) {
        this.pname = pname;
        this.age = age;
    }

    private  String pname;

    private  int age;

    public void sout(){
        System.out.println(pname+"::"+age);
    }
}

③测试类

package com.at.spring5.junit;

import com.at.spring5.Person;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import static org.junit.Assert.*;


public class PersonTest {
    //通过构造方法来注入属性
    @Test
    public void sout(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        Person person = context.getBean("name", Person.class);
        System.out.println(person);
        person.sout();
    }


}

④测试结果
Spring5的学习笔记__01_第3张图片
总结:
1、标签

(1)在 spring 配置文件中,使用 bean 标签,标签里面添加对应属性,就可以实现对象创建

(2)在 bean 标签有很多属性,介绍常用的属性

  • id 属性:唯一标识
  • class 属性:类全路径(包类路径)

(3)创建对象时候,默认也是执行无参数构造方法完成对象创建

(4)配置文件中property标签调用属性set方法注入属性

(5)配置文件中constructor-arg标签调用有参构造注入属性

2、IOC的概括

2.1、IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂

2.2、Spring 提供 IOC 容器实现两种方式:(两个接口)

(1)BeanFactory:IOC 容器基本实现,是 Spring 内部的使用接口,不提供开发人员进行使用

  • 加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象

(2)ApplicationContext:BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人
员进行使用

  • 加载配置文件时候就会把在配置文件对象进行创建

你可能感兴趣的:(spring,java)