springIOC、AOP的一些注解
springIOC、AOP的一些注解(使用这些注解之前要导入spring框架的一些依赖):
1.注入IOC容器
@Compontent:使用注解的方式添加到ioc容器需要在配置文件中添加扫包操作<context:component-scan base-package=“需要扫的包”/>这个注解有个value属性,就相当于bean中的id;
大多数类能使用这个注解实现装配操作,但是我们在实际开发中会有三层:controller层(action),service层,dao层,
那么我们@Compontent也有相应的“子类”注解来让我们更好的区分这些层次:@Controller控制controller层,@Service
控制service层,@Repository控制dao层;
2.属性值的装配
@Value装配属性值相当于bean中的<property name="" value="要装配的值"/>
3.其他bean的引用
① @Autowired(自动装配):对于其他bean的引用我们需要使用自动装配,它是根据byType和byName装配的,只要满足其中
一个条件就装配成功;它还可以和另外一个注解@Qualifier("要装配的其他bean的id值")。
② @Resource用法和@Autowired用法一致也是根据byType和byName装配的;和@Autowired的区别是不要和@Qualifier组合
使用,可以直接在括号里指定其他bean的id:@Resource("其他bean的id")。
③ @Inject(需要去中央仓库引入JSR330的架包,导入javax.inject依赖即可):如果需要指定bean,主要组合一个注解叫
@Named("其他bean的id"),用法和@Autowired相似;那么由此可见对其他bean的引用,最方便的还是@Resource注解。
4.集合类型的装配
使用@Resource(name="bean中的id名")以下是在配置文件中配置的各种集合(需要用到一个util的命名空间):
①list集合: <util:list id="list">
<value>1</value>
<value>2</value>
</util:list> ②set集合: <util:set id="set">
<ref bean="其他bean的id"/>
<bean class="ioc.OtherBean">
<property name="name" value="zhangsan"/>
</bean>
</util:set> ③map集合: <util:map id="maps">
<entry key="123" value-ref="otherBean"/>
<entry>
<key>
<value>456</value>
</key>
<ref bean="otherBean1"/>
</entry>
</util:map>
5.初始化和销毁
① @PostConstruct(在对象创建完成后执行初始化方法)一般反正该init()方法上
② @PreDestory(在容器销毁之后执行的销毁方法)一般放在destory()方法上
6.域
@Scope(scopeName="prototype")加在类上使该类变成多列,singleton参数为单列。
7.Aop的一些注解由AspectJ提供,步骤如下:
1.编写通知
2.配置(注解方式配置AOP非常简单)
①.将target放入到IOC容器
②.将通知添加到IOC容器
③.指定切面 ,在通知上添加@Aspect
④.给方法添加通知类型
@Before前置通知
@AfterRetuning后置通知
@AfterThrowing异常通知
@Around环绕通知
⑤.解析Aspect的注解,解析注解有两种方式:
(1). 在容器中添加<bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator"/>
(2).在容器中添加<aop:aspectj-autoproxy/>,这个是aop的一个命名空间,显然这种方法比较简单,但是底层实现还是上面的。
3.对于切点@Pointcut(这里就用@Before为列了):
① 用法一:@Before(“跟AspectJ表达式,你想添加通知扫描的包”)
② 对pointcut,可以在通知中单独定义一个pointcut方法,在方法添加一个注解@Pointcut,
@Pointcut("execution(* aop.impl.*ServiceImpl.*(..))"),这个value里面是AspectJ表达式,具体用法就不介绍了
public void pointcut(){}
使用的时候
@Before("pointcut()"),这里必须加上()

springIOC、AOP的一些注解的更多相关文章
- Spring的AOP配置文件和注解实例解析
1.1 Spring的AOP配置文件和注解实例解析 AOP它利用一种称为"横切"的技术,将那些与核心业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减 ...
- AOP获取方法注解实现动态切换数据源
AOP获取方法注解实现动态切换数据源(以下方式尚未经过测试,仅提供思路) ------ 自定义一个用于切换数据源的注解: package com.xxx.annotation; import org. ...
- 运用Spring Aop,一个注解实现日志记录
运用Spring Aop,一个注解实现日志记录 1. 介绍 我们都知道Spring框架的两大特性分别是 IOC (控制反转)和 AOP (面向切面),这个是每一个Spring学习视频里面一开始都会提到 ...
- SpringIOC&AOP
Spring是为简化企业级系统开发而诞生的,Spring框架为J2EE应用常见的问题提供了简单.有效的解决方案,使用Spring,你可以用简单的POJO(Plain Old Java Object)来 ...
- 面向切面编程AOP:基于注解的配置
Aop编程就是面向编程的羝是切面,而切面是模块化横切关注点. -切面:横切关注点,被模块化的特殊对象. -通知:切面必须要完成的工作 -目标:被通知的对象 -代理:向目标对象应用通知之后创建的对象. ...
- 【Spring五】AOP之使用注解配置
AOP使用注解配置流程: 1.当spring容器启动时候. < context:component- scan base-package= "cn.itheima03.sprin ...
- Spring+AOP+Log4j 用注解的方式记录指定某个方法的日志
一.spring aop execution表达式说明 在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点" 例如定义 ...
- spring AOP 和自定义注解进行身份验证
一个SSH的项目(springmvc+hibernate),需要提供接口给app使用.首先考虑的就是权限问题,app要遵循极简模式,部分内容无需验证,用过滤器不能解决某些无需验证的方法 所以最终选择用 ...
- 使用AOP实现缓存注解
为何重造轮子 半年前写了一个注解驱动的缓存,最近提交到了github.缓存大量的被使用在应用中的多个地方,简单的使用方式就是代码先查询缓存中是否存在数据,如果不存在或者缓存过期再查询数据库,并将查询的 ...
随机推荐
- UEP-级联查询
级联查询在UEP中采用动态下拉的形式,cascadeid为关键字,注意jsp页面的id的相互嵌套关系,数据库字段的数值的设置,和动态下拉SQL语句的书写.本功能实现了省市区的三级联动查询
- Java中Calendar.DAY_OF_WEEK、DAY_OF_MONTH需要减一的原因
Java中对日期的处理需要用到Calendar类,其中有几个方法在使用时需要新手注意.1. 在获取月份时,Calendar.MONTH + 1 的原因(Java中Calendar.MONTH返回的数值 ...
- 十二个 ASP.NET Core 例子——中间件
目录: 什么是中间件(IApplicationBuilder) 创建 顺序规则 Asp.Net Core 内置的中间件 1.什么是中间件 官方:中间件是组装成应用程序管道以处理请求和响应的软件.每个组 ...
- 织梦CMS安装分享插件
获取百度分享按钮织梦系统插件 点击下载:dedecms 5.* 插件 更新日期:2011.09.05 1.下载百度分享插件的织梦cms版本. 2.使用管理员账号登录您的站点后台管理中心,单击" ...
- Node.js框架 —— Express
一.安装express 1.需先安装express-generator npm install -g express-generator 2.安装express npm install -g expr ...
- asp.net -mvc框架复习(7)-基于MVC搭建用户登录项目框架
整体框架: 一.搭建Model层 1.添加通用数据访问类 2.添加实体类(封装和传递数据,和数据库中数据表对应) 3.添加数据访问类(通常和实体类同名,但是后缀名发生改变) 二.搭建控制器层Contr ...
- 积分图实现均值滤波的CUDA代码
没想到我2010年买的笔记本显卡GT330M 竟然还能跑CUDA,果断小试了一把,环境为CUDA6.5+VS2012,写了一个积分图实现均值滤波.类似于OpenCV的blur()函数. 使用lena. ...
- 基于 HTML5 WebGL 的 3D 网络拓扑结构图
现在,3D 模型已经用于各种不同的领域.在医疗行业使用它们制作器官的精确模型:电影行业将它们用于活动的人物.物体以及现实电影:视频游戏产业将它们作为计算机与视频游戏中的资源:在科学领域将它们作为化合物 ...
- Java 运动模糊
Java 运动模糊代码 想用Java 写个运动模糊的效果,无奈本人水平有限,国内也没找到资源,于是Google到了一个文档,特地分享出来! 本代码源自 http://www.jhlabs.com/ip ...
- MYBATIS异常:INVALID BOUND STATEMENT
1.mapper.xml中namespaces错误(***) 2.方法不存在 3.方法返回值错误