spring 学习 (很久之前的笔记)

Spring

1. Spring 简介

2. IOC理论

2.1

2.2 IOC创建对象的方式

  1. 无参(默认)

生成pojo对象

public class Person {
    private String name;
    private Integer age;
    private String sex;

    public Person() {
        System.out.println("无参构造函数生成对象");
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }
}

配置beans.xml

<bean id="person" class="Person"/>

测试

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Person person = context.getBean("person", Person.class);
        System.out.println(person);
    }
}

  1. 有参

    • 下标赋值
    <bean id = "person" class="Person">
            <constructor-arg index="0" value="erik"></constructor-arg>
        </bean>
    
    
    • 类型
    <bean id="person" class="Person">
            <constructor-arg type="java.lang.String" value="erik1"></constructor-arg>
        </bean>
    
    • 参数名
    <bean id="person" class="Person">
            <constructor-arg name="name" value="erik2"></constructor-arg>
        </bean>
    

总结:

3. spring配置

3.1 别名

顾名思义,给bean起一个别名

<bean id="person" class="Person"/>
    
    <alias name="person" alias="person2"></alias>

3.2 beans

id:bean的唯一标识符

class:pojo类

name:别名

<bean id="person" class="Person" name="person3"/>

3.3 import

4. 依赖注入

4.1 构造器注入

有参构造函数注入属性,有三种方式,下标、类型、名称

<constructor-arg index="0" value="erik"></constructorarg>
<constructor-arg type="java.lang.String" value="erik1"></constructor-arg>
<constructor-arg name="name" value="erik2"></constructor-arg>

4.2 set方式注入

<bean id="person" class="Person" name="person3">
        <property name="name" value="erik3"></property>
        <property name="hobbies">
            <array>
                <value>happy</value>
                <value>happy</value>
            </array>
        </property>
        <property name="sports">
            <list>
                <value>ball</value>
                <value>sports</value>
            </list>
        </property>
    </bean>

4.3 扩展方式

  1. p标签(属性;set方式)
<bean id="person" class="Person" p:age="17"></bean>
  1. c标签(构造函数)
<bean id="person" class="Person" c:age="20"></bean>

注意:使用p标签和c标签之前要导入约束

xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"

4.4 bean的作用域

在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。而bean的定义以及bean相互间的依赖关系将通过配置元数据来描述。

img

5. bean的自动装配

5.1 在xml中配置

5.2 在java中配置

5.3 隐式自动装配

  1. byname

byname会自动在容器的上下文中查找,和自己对象的set方法后面值对应的beanid

  1. bytype

byname会自动在容器的上下文中查找,和自己对象的set方法后面类型对应的beanid

5.4 自动装配缺点

  1. 属性要么都是用自动装配的形式,要么不用,不能部分使用或者部分不使用
  2. 只能by name和by type择其一

5.4 使用注解实现自动装配

注意:使用注解之前需要1. 导入约束 2. 配置注解的支持

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
</beans>

<context:annotation-config/>

@Autowired

直接在属性上使用,也可以在set方式上使用

6. spring使用注解开发

6.1 bean

6.2 属性如何注入

6.3 衍生的注解

6.4 自动装配

6.5 作用域

6.6 小结:

xml与注解:

  • xml更加万能,适用于任何场合,维护简单方便。
  • 注解不是自己的类使用不了,维护相对复杂。

xml与注解的最佳实践:

  • xml用来管理bean
  • 注解只负责完成对属性的注入
  • 注意:要让注解生效,必须要开启对注解的支持
//指定要扫描的包,这个包下的注解就会生效
<context:component-scan base-package="cn.erik"/>
<context:annotation-config/>

7. 使用java的方式配置spring

不是用spring的xml配置,而是使用java的方式JavaConfig

8. AOP

8.1 简介

8.2 spring aop

8.3 使用

  • spring aop API

  • 自定义类

  • 注解

9. 整合mybatis

10.事务

posted @ 2021-11-09 15:47  exile464  阅读(37)  评论(0)    收藏  举报