Spring

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随项目启动:
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

Spring AOP(未完成)

Spring中的AOP事务

事务:

事务的特性:acid

Atomicity原子性、Consistency一致性、Isolation隔离性、Durability持久性

事务并发问题:脏读、不可重复读、幻读

事务的隔离级别:读未提交、读已提交、可重复读、串行化

事务操作:打开事务、提交事务、回滚事务

Spring管理注解方式:

开启注解管理事务:

<tx:annotation-driven/>

使用注解:
Spring
Spring