Spring核心
- IOC inverse of 反轉(zhuǎn)控制
使用了Spring以后 對象可以通過XML格式 采用Bean類的規(guī)范存儲形耗,對象的創(chuàng)建以及依賴關(guān)系可以由Spring完成創(chuàng)建以及注入,反轉(zhuǎn)控制就是反轉(zhuǎn)了對象的創(chuàng)建方式祷蝌,從我們自己創(chuàng)建反轉(zhuǎn)給了程序(Spring) - DI dependency injection
實現(xiàn)IOC需要用DI做主持糊识,目前沒demo還沒看到
Spring是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的米间,是一個輕量級的控制反轉(zhuǎn)(IoC)[指的是將對象的創(chuàng)建權(quán)反轉(zhuǎn)給Spring者春,作用是實現(xiàn)了程序的解耦合]和面向切面(AOP)的容器框架炉擅。
- XML用于數(shù)據(jù)交換的文件辉懒,因此bean放在xml隨取隨用 有點像鍵值對應(yīng)的Session
實驗一 Bean的創(chuàng)建 和 Spring創(chuàng)建對象的三種方式
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<!--將User對象交給spring容器管理 阳惹,其中name任意,class為全包名
class屬性:被管理對象的完整類名
name屬性:給被管理的對象起個名字眶俩,根據(jù)該名稱獲得對象
可以重復(fù)穆端,可以使用特殊字符
id屬性:與name屬性一模一樣
名稱不可重復(fù),不能使用特殊字符
結(jié)論:盡量使用name屬性
-->
<bean name="user" class="com.sjtu.bean.User"></bean>
</beans>
<!--創(chuàng)建方式1:空參構(gòu)造創(chuàng)建 -->
<bean name="user" class="com.sjtu.bean.User"></bean>
創(chuàng)建容器對象仿便,相對于src下的路徑
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
實驗二 屬性注入(DI)
- set方法注入
<bean name="user" class="com.sjtu.bean.User" >
<!--值類型注入:為User對象中名為name的屬性注入tom作為值-->
<property name="name" value="tom"></property>
<property name="age" value="18"></property>
<!--引用類型注入:為car屬性注入下方配置的car對象 car是user中一個對象-->
<property name="car" ref="car"></property>
</bean>
<!--將car對象配置到容器中 -->
<bean name="car" class="com.sjtu.bean.Car">
<property name="name" value="蘭博基尼"></property>
<property name="color" value="黃色"></property>
</bean>
使用注解配置Spring
Spring中的注解大概可以分為兩大類
1.Spring的bean容器相關(guān)的注解,或者說bean工廠相關(guān)的注解
2.Spring MVC的相關(guān)注解Bean容器相關(guān)注解有
@Required
@Autowired(自動裝配)
@PostConstruct
@PreDestory
以及和值的注入有關(guān)的注解如
@Value
@Scope
SpringMVC相關(guān)的注解有
@Controller
@RequestMapping
@RequestParam
@ResponseBody首先理解Java的注解 @Override 等 然后了解Spring為什么引入注解攒巍,如何使用嗽仪,常用注解有哪些 等等
還有Spring的AOP思想 沒怎么看懂
AOP 底層的結(jié)構(gòu) 很神奇的操作
AOP 面向切面的編程 好好的一段源代碼,可以在運行的時候柒莉,給你注入一些行為闻坚,方法前 方法后,進行一些
其實是 寫一段新的代碼 替換 原來的代碼
做事務(wù)處理的時候 事務(wù) 常常需要保證原子性兢孝,需要在上下文Context的信息窿凤,
常常用AOP的方式,注入前后文Context的信息跨蟹,如果記錄失敗的話 都會做回退
具體實現(xiàn)就有點復(fù)雜了
裝載時候注入 load這個對象的時候 注入一些東西 這一塊可以暫時放一放
Alert 就變成原子特性的事務(wù)
不需要程序硬編碼
把數(shù)據(jù)和邏輯代碼分離 雳殊,因此 現(xiàn)在算法或者模型更新,只需要換邏輯代碼即可