重温Spring-爱之初体验

3 篇文章 0 订阅
2 篇文章 0 订阅

声明式注解:

@Component,@Controller,@Service,@Repository

以上注解用在类上,表示当前类的实体创建由Spring来管理

注入Bean类注解:

@Resource,@Autowired,@Inject

以上注解可用在set方法或者属性上,大部分情况下我们都是用在属性上,比较简洁。其中1,3两个注解是java规范提供的,2是由spring提供的,前两个的区别为:@Resource注解是按照属性名进行注入,@Autowired则是按照属性类型进行注入,实际开发中用后者的比较多。所有的注解spring都是支持的。

@Configuration 注解声明当前类是一个配置类,由spring来管理,类似于原来spring的application.xml文件。

@CompontentScan 注解是组件扫描注解,需要设置扫描的包路径,使用此注解,spring容器会自动扫描此包路径下所有使用声明注解的类来交给spring管理

重点:java配置

          java配置是spring4.x推荐的配置方式,可以完全替代xml配置,这个也是spring boot之所以可以简化配置的核心。

          java配置指的是由@Configuration和@Bean来组合实现。这种声明式的注解组合我们称之为java配置。其中,@Configuration声明当前类是一个配置类,一个配置类相当于spring中的一个xml文件;@Bean 注解在方法上,声明当前方法的返回值为一个Bean。因此一个配置类里面可以包含多个@Bean注解。

时机选择

        何时使用java配置,何时使用注解配置呢(注解配置指的是除了@Compontent注解以及@Bean注解组合之外的声明式注解方式)

    答:一般关于全局的配置我们使用java配置,如数据库配置,跨域配置,MVC配置等,业务类的Bean的配置我们使用注解配置,如典型的MVC在控制层中我们一般使用@Controller注解,在业务逻辑层使用@Service注解等。

特别说明,在Spring容器中,只要容器中存在某个Bean就可以在另一个Bean的声明方法的参数中注入,spring默认的创建Bean的方式为单例。

       当然,提到Spring不得不提到他的AOP功能,面向切面的编程,在实际开发中例如,日志的统计,全局异常的处理或者数据库的事务注解处理等都是用的此机制。

      Spring的AOP的存在目的是为了解耦。AOP可以让一组类共享一种行为。之所以是面向切面的编程,是因为AOP与接口的维度不同,前者是横向的,比如说在所有类中以add开头的方法都可以表示添加从而记录相关操作,而接口却不行,接口只能是在具体的实现子类中才会有实际的意义,因此是纵向的。OOP的继承是单继承,功能聚合度会更低,这样看来AOP在一定程度上弥补了OOP的缺陷。嘿嘿!!

Spring 支持AspectJ的注解式切面编程

      使用@AspectJ声明是一个切面。众所周知,面是由线构成的,线是由点构成的。因此AspectJ应该具有切线与切点。那什么是切线,什么是切点呢,先要定义一下我们是怎么切,是在前面切还是在后面切,还是在中间切,还是在前后都切呢?诸君且看,

      在Spring中我们可以使用@After,@Before,@Around三种注解来声明建言,也就是我们的切线,建言的目的是为了明确我们在方法的前Before,后After,或者前后Around来进行切割,由这些注解来声明切线。那这些线是怎么组成的呢,我们只声明了或前或后或环绕的顺序那怎么构成这些线呢,这就是我们的重点切点pointcut,也是我们面向切面编程的最小单位。

    在Spring中我们使用@PointCut来声明定义拦截规则,然后在建言中作为参数调用。满足拦截规则的所有的被拦截的地方我们称为连接点JoinPoint。

   注:Spring中我们使用@EnableAspectJAutoProxy注解来开启对AspectJ的支持。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值