常用框架整理
2021-05-24 17:21:04 0 举报
AI智能生成
包含Spring以及SpringMVC系统结构
作者其他创作
大纲/内容
Spring
核心概念
IOC
Inverse of Controll:控制反转
反转了依赖关系的满足方式,由之前的自己创建依赖对象,变为由工厂推送。(变主动为被动,即反转)
解决了具有依赖关系的组件之间的强耦合,使得项目形态更加稳健
DI
Dependency Injection:依赖注入
所谓依赖注入,是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入。
Spring的依赖注入对调用者和被调用者几乎没有任何要求,完全支持对POJO之间依赖关系的管理
AOP
Aspect Orentied Programming: 面向切面编程
通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
IOC&DI
基于xml
快速入门
导入依赖
pom.xml
导入junit,spring-context
代码编写
UserService.java接口
UserServiceImpl.java实现接口
配置beans
<bean id="" class=""/>
编写测试代码
加载spring配置文件:ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
获取配置连接对象:UserService userService = context.getBean("userService", UserService.class);
bean标签
id
Spring-Bean唯一标识
class
Spring-Bean全限定类名
init-method
指定Spring-Bean初始化函数
destory-method
指定Spring-Bean销毁函数
scope
singleton, prototype, request, session, application, websocket
DI
构造方法注入
标签体形式
<constructor-arg name="dao" ref="userDAO"/>
标签参数形式
c:dao-ref="userDAO"
set方法注入
标签体形式
<property name="dao" ref="userDAO"/>
标签参数形式
p:dao-ref="userDAO"
导入properties
集合注入
<list>或<array>或<set>
<value>Leonardo</value>
</list>
<value>Leonardo</value>
</list>
<map>
<entry key="nationality" value="America" />
</map>
<entry key="nationality" value="America" />
</map>
<props>
<prop key="Titanic">Jack</prop>
</props>
<prop key="Titanic">Jack</prop>
</props>
IoC
构造方法创建
静态工厂创建
实例工厂创建
基于注解
IoC
构造方法创建
Spring针对Bean管理中创建对象提供注解
@Component
@Controller
@Service
@Repository
控制生命周期
@PostConstruct
@PreDestory
控制作用范围
@Scope
工厂创建
创建配置类,替代xml文件
@Configuration
定义Bean
@Bean
编写测试类
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext("com.mobiletrain");
DI
@Autowired
根据属性类型进行自动装配
@Qualifier
根据名称进行注入,与@Autowired一起使用
@Resource
可以根据类型注入,可以根据名称注入
@Value
注入普通类型属性
@PropertySource
加载指定的属性文件@PropertySource("jdbc.properties")
自定义类注入
成员变量注入
方法参数注入
外部类注入
成员变量注入
方法参数注入
xml与注解整合
注解整合注解
@ComponentScan
@Import
xml整合xml
<import/>
注解整合xml
@ImportResource
xml整合注解
<context:component-scan/>
spring整合junit
导入依赖
spring-test
编写测试
@ContextHierarchy({
@ContextConfiguration("classpath:applicationContext.xml"),
@ContextConfiguration(classes = RepositoryConfig.class)
})
@ContextConfiguration("classpath:applicationContext.xml"),
@ContextConfiguration(classes = RepositoryConfig.class)
})
AOP
概述
定义
把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强
代理模式
xxx控制xxx实体的访问
静态代理
先确定实体(RealSubject),后确定代理(Proxy)
动态代理
先确定代理(Proxy),后确定实体(RealSubject)
实现原理
Java动态代理
创建接口,定义方法
创建接口实现类,实现方法
调用newProxyInstance方法
参数1:类加载器
参数2:增强方法所在的类,这个类实现的接口,支持多个接口
参数3:实现这个接口InvocationHandler,创建代理对象,写增强的部分
导入依赖
spring-context, spring-aspects
cglib动态代理
aop-ProxyFactory
术语
连接点
类里边哪些方法可以被增强
切点
实际被真正增强的方法
通知
实际增强的逻辑部分称为通知(增强)
前置通知
before
后置通知
after
环绕通知
after-returning
异常通知
after-throwing
最终通知
around
切面
通知与切点的结合,把通知应用到切点的过程
引入
向现有的类添加方法或属性
织入
把切面应用到目录对象,并创建新的代理对象的过程
AOP操作
基于xml的aop配置
切入点表达式
作用:知道对哪个类里面的哪个方法进行增强
语法结构: execution([权限修饰符] [返回类型] [类全路径] [方法名称]([参数列表]) )
动态方式(切点+通知)
定义接口和实现类
定义切点
定义通知
静态方式(切点+通知类)
定义切点
定义通知
基于注解的aop配置
SpringMVC
概述
为什么要用SpringMVC?
为了在web项目中更好的使用Spring
入门
快速入门
导入依赖
javax.servlet-api,spring-webmvc,spring-web,spring-context
配置springmvc.xml
配置前端控制器web.xml
配置Controller
配置视图解析器
SpringMVC执行流程分析
DispatcherServlet前置控制器
HandlerMapping映射处理器
HandlerAdapter适配处理器
ViewResolver视图解析器
RequestMapping注解
value
给HandlerMapping来用的映射地址
path
给HandlerMapping来用的映射地址,等同于value
method
请求方式,RequestMethod.GET、RequestMethod.POST...
params
请求参数,在Java代码就可以直接接到这些参数了,不再需要request.getParameter...,可以不写
参数绑定
基本类型与String类型
POJO类型
Plain Ordinary Java Object简单的Java对象
最基本的 Java Bean ,只有属性字段及 setter 和 getter 方法,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口
内置转换器
org.springframework.core.convert.support包内的,都是Spring内置的转换器,一部分的转换器描述了原始类型和目标类型,通过范型描述
自定义类型转换器
实现Converter接口
配置转换器
需要将自己编写的转换器,放到Spring容器当中
引用自定义转换器
编码过滤器filter
配置web.xml
配置springmvc.xml
常用注解
RequestParam
描述参数名,默认值,是否必填等等
PathVariable
当前端访问时,uri为: /user/delete/10时,如何把id=10接收到
RequestHeader
请求头
CookieValue
注意@CookieValue("JSESSIONID")必须大写,同RequestParam
SessionAttribute
描述会话域中参数名,是否必填等
Model
Model参数
ModelMap参数
ModelAttribute注解
SessionAttributes注解
页面跳转
转发forward
重定向redirect
深入
0 条评论
下一页