要掌握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