1. 程式人生 > 其它 >spring 學習 (很久之前的筆記)

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相互間的依賴關係將通過配置元資料來描述。

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.事務