总结一:Spring

Spring是什么?Spring作用?

1.Spring 粗解:

Spring是针对于复杂的项目而产生的,用于项目的管理。使用JavaBean代替EJB 降低项目各层次之间的耦合性。(Spring的配置大于约定)

2. Spring的主要两方面:IOC(控制反转)  + AOP(依赖注入)

1. IOC(可以看做是一个容器):https://www.cnblogs.com/best/p/5727935.html  

不再跟之前Person person =new Person()  一样 构造对象 ,而是通过Spring的配置文件.xml 统一管理对象,通过依赖注入对象。--- 获得依赖对象的方式反转了。

IOC的实现方式有两种:1)xml配置的方式。2)注解的形式

1)xml配置文件的形式

代码:

        IBookDAO bookDAO; 

         //容器

        ApplicationContext ctx=new ClassPathXmlApplicationContext("IOCBeans01.xml");
        //从容器中获得id为bookdao的bean
        bookDAO=(IBookDAO)ctx.getBean("bookdao");
IOCBeans01.xml配置文件中的配置

<bean id="bookdao" class="com.zhangguo.Spring051.ioc01.BookDAO"></bean>

2)注解的方式

/**
 * 实现类的 类注解
 */

@Component("bookdaoObj")  它可以被Spring容器识别,启动Spring后,会自动把它转成容器管理的Bean。


除了@Component外,Spring提供了3个功能基本和@Component等效的注解,分别对应于用于对DAO,Service,和Controller进行

注解。

1:@Repository 用于对DAO实现类进行注解。
2:@Service 用于对业务层 service  注解,但是目前该功能与 @Component 相同。

3:@Constroller用于对控制层 controller 注解,但是目前该功能与 @Component 相同。

4:@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行注解

附IOC通俗的理解如下:
     IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。

     DI依赖注入:说的是创建对象实例时,为这个对象注入属性值或其他对象实例后,侧重于实现。

2. AOP 面向切面编程

所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

AOP编程其实是很简单的事情,纵观AOP编程,程序员只需要参与三个部分:
    1、定义普通业务组件
    2、定义切入点,一个切入点可能横切多个业务组件

    3、定义增强处理,增强处理就是在AOP框架为普通业务组件织入的处理动作

所以进行AOP编程的关键就是定义切入点和定义增强处理,一旦定义了合适的切入点和增强处理,AOP框架将自动生成AOP代理,即:代理对象的方法=增强处理+被代理对象的方法。

依赖:两个jar包:1、aopalliance.jar2、aspectjweaver.jar

实现方式:1)XML实现方式 

<!-- 被代理对象 -->
    <bean id="math" class="com.zhangguo.Spring052.aop01.Math"></bean>
    <!-- 通知 -->
    <bean id="advices" class="com.zhangguo.Spring052.aop01.Advices"></bean>
    <!-- aop配置 -->
    <aop:config proxy-target-class="true">
        <!--切面 -->
        <aop:aspect ref="advices">
            <!-- 切点 -->
            <aop:pointcut expression="execution(* com.zhangguo.Spring052.aop01.Math.*(..))" id="pointcut1"/>
            <!--连接通知方法与切点 -->
            <aop:before method="before" pointcut-ref="pointcut1"/>
            <aop:after method="after" pointcut-ref="pointcut1"/>
        </aop:aspect>
    </aop:config>

2.注解配置实现AOP

/**
 * 被代理的目标类
 */

@Service("math")

、、/**
 * 通知类,横切逻辑
 *

 */

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

@Component
@Aspect   //表示声明一个切面
public class Advices {
    @Before("execution(* com.zhangguo.Spring052.aop02.Math.*(..))")  表示before为前置通知,通过参数execution声明一个切点


四、AspectJ通知注解

AspectJ通知注解共有6个,常用5个,引介少用一些。重点:https://www.cnblogs.com/best/p/5736422.html

@Component
@Aspect

@Before

@After

 //切点

@Pointcut

@Around



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值