spring的注解
spring中对注解开发源自于java1.5的支持.个人理解javaWeb开发一直在致力于解放繁重的配置,由xml配置文件到注解,spring的注解就是代替XML文件中<Bean>标签的配置.简单看了spring中一些常用的注解感觉是基于@compont实现的,比如controller和service,像是语义化一样,让使用者知道这是哪个层.
spring 里做单元测试
今天也练习了在spring中做单元测试,步骤还是挺简单的.之前由于没做单元测试最后调试起来挺难受的,所以希望后面可以养成习惯.
springAOP的学习
今天简单了解了AOP的作用和优势,在程序运行期间不修改源代码下对方法进行功能完善,减少了重复代码提高了开发效率.个人理解一个简单功能上的AOP场景,比如在执行具体逻辑前,我想做一个权限校验(当前用户有没有权限呢?),或者在执行完之后要做个其他的什么事情.也就是说在没有对业务核心代码的侵入性前提下,给业务核心代码添加额外的功能也就只有AOP了.以上是我简单理解.
开始一个Spring AOP之旅(注解的方式)
首先自然还是导入依赖,接着对目标类和切面类加入注解,让spring来管理.
@Component("target")
public class ProductServiceImpl implements IProductService {
@Override
public void upProduct() {
System.out.println("upProduct--->success");
}
}
@Component("aspect")
/**
* 表示这是一个切面类
*/
@Aspect
public class MyAspect {
@Before(value = "execution(* com.cxn.service.*.*(..))")
public void before(){
System.out.println("前置Advice");
}
@After(value = "execution(* com.cxn.service.*.*(..))")
public void after(){
System.out.println("后置Advice");
}
}
接着配置xml文件
<!--组件扫描-->
<context:component-scan base-package="com.cxn"></context:component-scan>
<!--aop的自动代理-->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
最后修改启动类即可.getBean里面的"target"就很好解释了component注解替代<Bean>标签.
public class ApplicationAop {
public static void main(String[] args) {
//xml的方式
// ClassPathXmlApplicationContext applicationContext =
// new ClassPathXmlApplicationContext("springAop.xml");
// IUserService iUserService = (IUserService) applicationContext.getBean("target");
// iUserService.findUser();
//注解的方式
ClassPathXmlApplicationContext applicationContext =
new ClassPathXmlApplicationContext("springAopAnno.xml");
IProductService iProductService = (IProductService) applicationContext.getBean("target");
iProductService.upProduct();
}
}