Spring能解决的问题有哪些?
- 解耦应用程序
- 简化开发流程
- Aop支持
- 声明事事物集成Junit4
- 方便集成各种开发源的优秀框架
- 降低javaApl的使用难度
Spring框架学后分类:
我们学习的Spring框架的优势又分为:
spring三大优势理解:
一、轻量级的IOC容器,IOC也叫控制反转,后来改名为DI也叫依赖注入(IOC/DI)
理解:
依赖注入(控制反转)的慨念:当编写一个复杂的java应用程序时,应用程序类应该尽可能的独立于其他的java类来增加这些类可重用的可能性,当进行单元测试时,可以使他们独立于其他类进行测试。依赖注入(或者有时被称为配线)有助于将这些类粘合在一起,并且在同一时间让他们保持独立。依赖注入实现的3种方式,构造函数注入,seting方法注入,注解注入。
实现依赖注入有以下方式:
- set方法注入
- 构造器注入
- 构造器注入
二、面向切面编程(AOP)
理解:
概念:一个程序中跨越多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用-程序的业务逻辑,有各种各样常见的很好的关于方面的例子,比如日志记录,声明性事务,安全性,和缓存等等。在oop中,模块化的关键单元是类,而在,aop中模块化的关键单元是方面。Aop帮助你将横切关注点从他们所影响的对象中分离出来的,然而依赖注入帮助你的应用程序对象从彼此中分离出来,spring框架的aop模块提供了面向方面的程序设计实现,允许你定义拦截器方法和切入点,可以实现将应该被分开的代码干净的分开功能。
三、一致性的事物管理(Transaction Manager)
理解:事物(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(until)这些操作应该要么完整的执行,要么完全不执行,以确保数据的完整性和一致性。
spring框架的核心是什么?
spring框架基本上都要用到spring容器,所以spring容器是spring框架的核心。
spring基础流程如下:
PoJo.java(这个类里面存了一个add方法)
package com.anzhuo.cm;
public class PoJo {
public void add(){
System.out.println("HolleWord");
}
}
Context.java(这个类里面创建了一个类类型的属性并且给它们了get,set方法)
package com.anzhuo.cm;
public class Context {
private PoJo pj;
public PoJo getPj() {
return pj;
}
public void setPj(PoJo pj) {
this.pj = pj;
}
}
spring.xml(这个配置文件里面配置了PoJo和Context并且使用ref把它们关联了)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">
<bean id="pojo" class="com.anzhuo.cm.PoJo"></bean>
<bean id="context" class="com.anzhuo.cm.Context">
<property name="pj" ref="pojo"></property>
</bean>
</beans>
Test.java(这是一个测试类测试到Context里面拿PoJo里面的值看拿到了没有)
package com.anzhuo.cm;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
Context ct = (Context) ac.getBean("context");
ct.getPj().add();
}
}