要掌握SSM,所學內容還是要規划一下,不建議直接開擼SSM,最好把Spring SpringMVC Mybatis各個擊破
我的學習網站:http://how2j.cn/k/ssm/ssm-tutorial/1137.html?tid=77
Spring框架是個輕量級的Java EE框架。IOC(控制反轉)、DI(依賴注入)、AOP(面向切面)是Spring的核心思想
一、IOC/DI(控制反轉/依賴注入)
IOC(控制反轉 ):就是 創建對象由以前的程序員自己new來調用,變成了交由Spring創建對象。
和傳統方式獲取對象的方式不同:
傳統方式:通過new 關鍵字創建一個對象,比如:Person p = new Person();
IOC方式:對象的生命周期由Spring管理,直接從Spring那里獲取一個對象。控制反轉 也就是 控制權原來屬於程序員 現在交給了Spring
DI(依賴注入):就是 拿到的對象的屬性,已經被注入好了相關的值,直接使用即可。
二、注入對象
可為對象的屬性注入值。
可為對象注入值。
例如:
三、注解方式IOC/DI
以上為在applicationContext.xml配置文件中直接配置。還可以用注解的方式進行配置,以簡化xml的配置內容。
在xml中添加 <context:annotation-config/> 表示 告訴Spring要用注解的方式進行配置
例如:
在Product對象的category屬性前加上@Autowired注解
除了在屬性前加上@Autowired這種方式外,也可以在setCategory方法前加上@Autowired,這樣來達到相同的效果
除了@Autowired之外,@Resource也是常用的手段
上述例子是對注入對象行為的注解,那么bean對象本身,比如Category,Product可不可以移出applicationContext.xml配置文件,也通過注解進行呢?
比如:將下圖中的內容移除xml以注解的形式配置
刪除xml中的所有配置 只添加 <context:component-scan base-package="com.how2java.pojo"/> 表示 告訴Spring,bean都放在com.how2java.pojo這個包下
例如:
使用@Component注解
例如:
四、AOP
AOP 即 Aspect Oriented Programming 面向切面編程
在面向切面編程的思想里面,把功能分為核心業務功能,和周邊功能。
所謂的核心業務,比如登陸,增加數據,刪除數據都叫核心業務
所謂的周邊功能,比如性能統計,日志,事務管理等等
周邊功能在Spring的面向切面編程AOP思想里,即被定義為切面
在面向切面編程AOP的思想里面,核心業務功能和切面功能分別獨立進行開發
然后把切面功能和核心業務功能 "編織" 在一起,這就叫AOP
准備業務類 ProductService
准備日志切面 LoggerAspect
配置 applicationContext.xml
execution(* com.how2java.service.ProductService.*(..))
這表示對滿足如下條件的方法調用,進行切面操作:
* 返回任意類型
com.how2java.service.ProductService.* 包名以 com.how2java.service.ProductService 開頭的類的任意方法
(..) 參數是任意數量和類型
測試
通過配置的方式,把切面和核心業務類編制在了一起。
運行測試,可以發現在編織之后,業務方法運行之前和之后分別會打印日志
五、注解方式AOP
上面配置AOP方式為xml 也可以用注解的方式配置AOP
使用@Component("s") 注解ProductService 類
注解配置切面
@Aspect 注解表示這是一個切面
@Component 表示這是一個bean,由Spring進行管理
@Around(value = "execution(* com.how2java.service.ProductService.*(..))") 表示對com.how2java.service.ProductService 這個類中的所有方法進行切面操作
配置xml