spring 學習 (很久之前的筆記)
阿新 • • 發佈:2021-11-09
Spring
1. Spring 簡介
2. IOC理論
2.1
2.2 IOC建立物件的方式
- 無參(預設)
生成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); } }
-
有參
- 下標賦值
<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 擴充套件方式
- p標籤(屬性;set方式)
<bean id="person" class="Person" p:age="17"></bean>
- 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 隱式自動裝配
- byname
byname會自動在容器的上下文中查詢,和自己物件的set方法後面值對應的beanid
- bytype
byname會自動在容器的上下文中查詢,和自己物件的set方法後面型別對應的beanid
5.4 自動裝配缺點
- 屬性要麼都是用自動裝配的形式,要麼不用,不能部分使用或者部分不使用
- 只能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
-
自定義類
-
註解