springIOC、AOP的一些注解
2018-06-18 03:15:59来源:未知 阅读 ()
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()"),这里必须加上()
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 总结一些 Java 相关笔试、面试题,万一用上了呢 (=_=) -- 基 2020-06-08
- Spring10_AOP 2020-06-04
- Java - IO - 字符流 2020-05-31
- 针对kafka_2.13版本测试过程中的一些坑 2020-05-23
- Spring AOP功能 2020-05-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash