spring重要知识点总结
一、面向切面编程
配置applicationContext.xml文件
<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:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd ">
<!--面向切面注解方式 -->
<aop:aspectj-autoproxy proxy-target-class="true"/>
<!--自动扫描包中的类,并创建实例 -->
<context:component-scan base-package="cn.com.test,cn.com.daoImp,cn.com.service,cn.compony.action"/></beans>
注解类,如下例子:
@Aspect@Component//注意:一定要添加该注解component,并且在applicationContext.xml的配置context:component-scan中加入该包名
public class Aspectj_dowhat {
@Pointcut("execution(* cn.com.test.dowhat.say*(..))")
public void pointCut(){}
@After("pointCut()")
public void after(){
System.out.println("after");
}
@Before("pointCut()")
public void before(){
System.out.println("before");
}
@Around("pointCut()")
public Object around(ProceedingJoinPoint joinpoint){
//joinpoint.getArgs()得到传入到方法的参数
Object valu = null;
try {
System.out.println("around before");
valu = joinpoint.proceed();
//返回所代理的方法(有返回值的方法)返回值
System.out.println("around after:"+valu);
} catch (Throwable e) {
e.printStackTrace();
/*try {
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
request.getRequestDispatcher("/error.html").forward(request, response);
} catch (Exception e2) {
e2.printStackTrace();
}*/
}
return valu;
}
@AfterReturning("pointCut()")
public void afteReturning(){
System.out.println("afteReturning");
}
@AfterThrowing("pointCut()")
public void afterThrowing(){
System.out.println("afterThrowing");
}
}
二、使用注解方式自动扫描类,注册到spring容器和依赖注入,
1、applicationContext.xml配置与第一项相同。
2、类定义时的注解,下面的注解功能都一样,不同表达让代码功能分类更清晰。
@Service用于标注业务层组件
@Controller用于标注控制层组件(如struts2中的action)
@Repository用于标注数据访问组件,即DAO组件
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
3、实例的注入。@Resource和@Autowired都可以书写标注在字段或者该字段的setter方法之上。
@Resource默认是按照名称来装配注入,当找不到与名称匹配的bean会按照类型来装配注入;
@Autowired默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualifier一起使用;
三、实例的生命周期的设置(@scope)
@scope默认是单例模式:线程不安全
prototype:每次获取Bean的时候会有一个新的实例。线程安全
request:对每一次HTTP请求都会产生一个新的bean。
session:每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效。
global session:类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。
初始化方法:
@PostConstruct
public void init() {
}
销毁方法 :
@PreDestroy
public void destory() {
}
spring重要知识点总结的更多相关文章
- Spring MVC知识点整理
网上Spring MVC相关知识点的介绍已经有很多了,但是大部分文章都是介绍其中的一部分知识点. 本文希望能够向读者做一个基本整体的介绍,首先我们先来了解下Spring MVC的基础接口和组件. ...
- Spring IOC知识点一网打尽!
前言 只有光头才能变强 回顾前面: 给女朋友讲解什么是代理模式 包装模式就是这么简单啦 单例模式你会几种写法? 工厂模式理解了没有? 在刷Spring书籍的时候花了点时间去学习了单例模式和工厂模式,总 ...
- 2019年Spring核心知识点整理,看看你掌握了多少?
前言 如今做Java尤其是web几乎是避免不了和Spring打交道了,但是Spring是这样的大而全,新鲜名词不断产生,学起来给人一种凌乱的感觉,在这里总结一下,理顺头绪. Spring 概述 Spr ...
- Spring AOP 知识点入门
一.基本知识点 1.AOP概念 AOP(Aspect-Oriented Programming), 即 面向切面编程, 它与 OOP( Object-Oriented Programming, 面向对 ...
- 精益求精!Spring Boot 知识点全面回顾,带你重新细读源码!
约定优于配置 Build Anything with Spring Boot:Spring Boot is the starting point for building all Spring-bas ...
- 面试:Spring面试知识点总结
Spring知识点总结 1. 简介一下Spring框架. 答:Spring框架是一个开源的容器性质的轻量级框架.主要有三大特点:容器.IOC(控制反转).AOP(面向切面编程). 2. Spring框 ...
- Spring Boot 知识点总结
现在仅总结重要和实用的知识点,更加全面的请见链接:1.:2.. 微服务:架构风格(服务微化):一个应用应该是一组小型服务:可以通过HTTP的方式进行互通:微服务:每一个功能元素终都是一个可独立替换和独 ...
- [Java] Spring MVC 知识点
云图: @Service 用于标注业务层组件. 在 Spring-servlet 配置xml中,component-scan 标签默认情况下自动扫描指定路径下的包(含所有子包),将带有@Compone ...
- Spring重要知识点整理
一.IOC(Inversion of Control):控制反转 (1)Spring Core最核心部分 (2)需要先了解依赖注入(Denpendency Injection)/把底层类作为参数传递给 ...
- spring AOP知识点总结以及日志的输出
AOP的作用就是在基于OCP在不改变原有系统核心业务代码的基础上动态添加一些扩展功能.通常应用于日志的处理,事务处理,权限处理,缓存处理等等 首先,使用AOP需要添加的依赖有:spring-conte ...
随机推荐
- [MSSQL]表变量和临时表的区别
一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约 ...
- [转]decorators.xml的用法
原文地址:https://blog.csdn.net/laozhuxiao/article/details/54342121 简介: sitemesh应用Decorator模式,用filter截取re ...
- C语言 · FBI树
算法训练 FBI树 时间限制:1.0s 内存限制:256.0MB 锦囊1 二叉树. 问题描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I ...
- Linux下用gSOAP开发Web Service服务端和客户端程序
网上本有一篇流传甚广的C版本的,我参考来实现,发现有不少问题,现在根据自己的开发经验将其修改,使用无误:另外,补充同样功能的C++版本,我想这个应该更有用,因为能用C++,当然好过受限于C. 1.gS ...
- Angular4中路由Router类的跳转navigate
最近一直在学习angular4,它确实比以前有了很大的变化和改进,好多地方也不是那么容易就能理解,好在官方的文档和例子是中文,对英文不太好的还是有很大帮助去学习. 官方地址:https://angul ...
- mvc 根据模板导出excel,直接导出文件流
1.c# /// <summary> /// 导出员工 /// </summary> /// <returns></returns> [HttpGet] ...
- page load时执行JavaScript
// Multiple onload function created by: Simon Willison // http://simonwillison.net/2004/May/26/addLo ...
- java基础---->自定义gradle的插件
这里面简单的介绍一下gradle插件的编写. 自定义gradle插件 我们编写的gradle脚本一般是放在build.gradle文件中.所以首先创建一下build.gradle文件,下面的例子都是在 ...
- 升级 Glide 4.0 版本相关配置
http://blog.csdn.net/hexingen/article/details/72578066 http://blog.csdn.net/hexingen/article/details ...
- 11.7luffycity项目(2)
2018-11-7 18:53:17 等把项目做完再发完整代码和github连接 这里只整理笔记和新学的知识点! 1.url的两种写法 urls.py from django.conf.urls im ...