Spring AOP、IOC是什么?

1、什么是AOP?

AOP : 面向切面编程(Aspect Oriented Programming)技术,将一些重复的、和业务主逻辑不相关的功能性代码(日志记录、安全管理等)通过切面模块化地抽离出来进行封装,实现关注点分离、模块解耦,使得整个系统更易于维护管理。

常用注解:

注解概念
@Aspect切面是PointcutAdvice的集合,一般单独作为一个类。PointcutAdvice共同定义了关于切面的全部内容,它是什么时候,在何时和何处完成功能。
@Pointcut这是一组一个或多个切入点,在切点应该执行Advice。您可以使用表达式或模式指定切入点,后面示例会提到。
@Advice这是在方法执行之前或之后采取的实际操作。这是在Spring AOP框架的程序执行期间调用的实际代码片段。
@Joinpoint这表示你的应用程序中可以插入AOP方面的一点。也可以说,这是应用程序中使用Spring AOP框架采取操作的实际位置。
@Pointcut这是一组一个或多个切入点,在切点应该执行Advice。您可以使用表达式或模式指定切入点,后面示例会提到。
@Introduction引用允许我们向现有的类添加新的方法或者属性
@Weaving创建一个被增强对象的过程。这可以在编译时完成(例如使用AspectJ编译器),也可以在运行时完成。Spring和其他纯Java AOP框架一样,在运行时完成织入。

Advice通知注解:

注解概念
@Before()在方法被调用之前执行增强
@After()在方法被调用之后执行增强
@After-returning()在方法成功执行之后执行增强
@After-throwing()在方法抛出指定异常后执行增强
@Around()在方法调用的前后执行自定义的增强行为(最灵活的方式)

2、什么是IOC?

IOC:控制反转(Inverse of Control)设计思路,取得对对象的控制权,把本应该由自己生成的对象改由让第三方容器托管,Spring中运用依赖注入DI来实现控制反转。

思路如下:

需求现在有一个用户,为了实现某个查询,他想用mysql的形式查询。

传统的模式程序员需要在service中new一个mysqldao出来,每多一个mapper就需要多new一次。

需求现在用户觉得mysql不好,要改成oracle的形式查询。

传统的模式程序员需要对每个dao层都做修改,new一个oracle对象。

IOC模式将dao的创建交个第三方容器,通过setter/构造器/接口方式将mapper注入进对象。相当于将创建对象的职能控制反转给用户,用户需要什么实现方式就用什么方式实现。

常用注解:

用于创建对象

@Component:把资源让spring来管理。相当于xml中配置一个bean。value:指定bean的id,如果不指定value属性,默认bean的id是当前类的类名。首字母小写

@Controller:与@Component功能一样,一般用在表现层,便于分层

@Service:与@Component功能一样,一般用在业务层,便于分层

@Repository:与@Component功能一样,一般用于持久层,便于分层

用于注入数据

@Autowired:自动按照类型注入。当使用注解注入属性时,set方法可以省略。它只能注入其他bean类型。当有多个类型匹配时。使用要注入的对象变量名称作为bean的id,在spring容器中查找,找到了注入成功,找不到就报错。

@Qualifier:在自动按照类型注入的基础上,再按照Bean的id注入。它在给字段注入时不能单独使用,必须和@Autowire一起使用;但是给方法参数注入时,可以单独使用。value属性是指定Bean的id

@Resource:直接按照Bean的id注入。它也只能注入其他Bean类型。name属性是指定Bean的id

@Value:注入基本数据类型和String类型数据

用于改变作用范围

@Scope:指定Bean的作用范围。value属性指定范围的值--singleton单例,prototype多例,request作用与web应用的请求范围,session作用与web应用的会话范围,global-session作用与集群环境中会话范围

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值