1、Spring:DI/AOP
Spring对应的关键词:DI(依赖注入)和AOP(面向切面编程),可以认为是一个以DI和AOP为核心的javaweb一站式的集成框架。
DI也成为IOC(控制反转)用于管理Java对象之间的依赖关系,AOP用于解耦代码和公共服务代码(日志、安全、事务等)。
另1:ORM是Object Relation Mapping的缩写,即对象关系映射。是一种以面向对象的方式来进行数据库操作的技术。Hibernate,Mabitis
另2:POJO是Plain Old Java Object的缩写,是一个普通的java类。
ApplicationContext:每次容器启动时就会创建容器中配置的所有对象,并提供相应功能。
web.xml中配置Spring随项目启动:
bean元素的属性:
1、scope属性
singleton(默认值):单例对象。被标识为单例的对象在Spring容器中只会存在一个实例。
prototype:多例原型。对象每次在获得时才会被创建,每次创建的都是新的对象。(整合Struts2时ActionBean必须为多例的。)Spring不能对一个prototype bean的整个生命周期负责,容器会在初始化、配置、装饰或者是装配完一个prototype实例后,把他交给客户端,然后就对他不闻不问了。
request:web环境下,对象与request生命周期一致。
session:web环境下,对象与session生命周期一致。
2、生命周期属性
init-method:生命周期初始化方法,对象创建之后立即调用。
destory-method:生命周期的销毁方法,spring容器在关闭并销毁所有容器中的杜希昂之前调用。
spring的分模块配置
Spring复杂类型属性注入
开启使用注解代理配置文件
<context:component-scan base-package=“com.hytxwz”/>
将对象注册到容器常用注解:@Component(“beanName”)@Service(“beanName”)@Controller(“beanName”)@Reposiyory(“beanName”)
指定对象的作用范围:@Scope(scopeName=“prototype”)
值类型注入:@Value(“beanName”)(推荐通过set方法赋值,较通过实例对象的方式优点是不会破坏封装性)
引用类型注入:
@AutoWired 自动装配。如果匹配多个类型一致的对象,将无法选择具体注入拿一个对象,此时应配合@Qualifier(“beanName”)使用
@Resource(name=“beanName”)
初始化|销毁方法:
@PostConstrust(相当于init-method)
@PreDestory(相当于destory-method)
Spring与junit整合测试
测试类注解:
@RunWith(SpringJUnit4ClassRunner.class)(帮我们创建容器)
@ContextConfiguration(“classpath:applicationContext.xml”)(指定创建容器时使用哪个配置文件)
测试方法注解:@Test
Spring实现AOP的原理:
1、动态代理(优先):被代理的对象必须要实现接口,才嗯那个产生代理对象。
2、cglib代理:第三方代理技术,可以对任何对象生成代理对象。原理是对目标对象进行继承代理。(一次目标对象不能是final修饰的对象)
AOP名词学习:
Spring AOP(未完成)
Spring中的AOP事务
事务:
事务的特性:acid
Atomicity原子性、Consistency一致性、Isolation隔离性、Durability持久性
事务并发问题:脏读、不可重复读、幻读
事务的隔离级别:读未提交、读已提交、可重复读、串行化
事务操作:打开事务、提交事务、回滚事务
Spring管理注解方式:
开启注解管理事务:
<tx:annotation-driven/>
使用注解: