**Spring框架的IOC之注解方式的快速入门**

步骤一:导入注解开发所有需要的jar包

步骤二:创建对应的包结构,编写Java的类:接口到实现类

步骤三:在src的目录下,创建applicationContext.xml的配置文件,然后引入约束。注意:因为现在想使用注解的方式,那么引入的约束发生了变化

步骤四:在applicationContext.xml配置文件中开启组件扫描

可以采用如下配置
            <context:component-scan base-package="com.itheima"/> 这样是扫描com.itheima包下所有的内容

步骤五:在UserServiceImpl的实现类上添加注解
        * @Component(value="userService")    -- 相当于在XML的配置方式中 <bean id="userService" class="...">//给这个类加了一个id值。

步骤六:编写测试代码
        public class SpringDemo1 {
            @Test
            public void run1(){
                ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
                UserService us = (UserService) ac.getBean("userService");
                us.save();
            }
        }

**Spring框架中Bean管理的常用注解**
    
    1. @Component:组件.(作用在类上)
    
    2. Spring中提供@Component的三个衍生注解:(功能目前来讲是一致的)
        * @Controller        -- 作用在WEB层
        * @Service            -- 作用在业务层
        * @Repository        -- 作用在持久层(此三个是属于ioc定义id的)
        
        * 说明:这三个注解是为了让标注类本身的用途清晰,Spring在后续版本会对其增强
    
    3. 属性注入的注解(说明:使用注解注入的方式,可以不用提供set方法)
        * 如果是注入的普通类型,可以使用value注解
            * @Value            -- 用于注入普通类型(注入)
        
        * 如果注入的是对象类型,使用如下注解
            * @Autowired        -- 默认按类型进行自动装配
                * 如果想按名称注入
                * @Qualifier    -- 强制使用名称注入
        
        * @Resource                -- 相当于@Autowired和@Qualifier一起使用///Resource常用
            * 强调:Java提供的注解
            * 属性使用name属性

**Spring框架整合JUnit单元测试**
    
    1. 为了简化了JUnit的测试,使用Spring框架也可以整合测试
    2. 具体步骤
        * 要求:必须先有JUnit的环境(即已经导入了JUnit4的开发环境)!!
        
        * 步骤一:在程序中引入:spring-test.jar
        * 步骤二:在具体的测试类上添加注解

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringDemo1 { @Resource(name="userService")
private UserService userService; @Test
public void demo2(){
userService.save();
}
}

  -------------------------------------------------------------------------------------------

### 技术分析之Spring框架的核心功能之AOP技术 ###///对DAO层进行增强功能。

OOP:面向对象编程,AOP:面向切面编程

好处: AOP

* 可以在不修改源代码的前提下,对程序进行增强

具体:joinpoint(连接点):被拦截到的方法

         pointcut:(切入点):对哪些joinpoint进行拦截的定义

       advice(通知/增强):拦截到join point之后要做的事情就是通知。分为前置通知,后置通知,异常通知,环绕通知。

aspect(切面)            -- 是切入点和通知的结合,以后咱们自己来编写和配置的

----------------------------------------------------------------------------------

**技术分析之AspectJ的XML方式完成AOP的开发**

步骤一:创建JavaWEB项目,引入具体的开发的jar包

步骤二:创建Spring的配置文件,引入具体的AOP的schema约束

步骤三:创建包结构,编写具体的接口和实现类

步骤四:将目标类配置到Spring中
        <bean id="customerDao" class="com.itheima.demo3.CustomerDaoImpl"/>

步骤五:定义切面类
        public class MyAspectXml {
            // 定义通知
            public void log(){
                System.out.println("记录日志...");
            }
        }

步骤六:在配置文件中定义切面类
        <bean id="myAspectXml" class="com.itheima.demo3.MyAspectXml"/>

步骤七:在配置文件中完成aop的配置
        <aop:config>
            <!-- 引入切面类 -->
            <aop:aspect ref="myAspectXml">////这个时候myAspectXml这个类被加入了切面。
                <!-- 定义通知类型:切面类的方法和切入点的表达式 -->
                <aop:before method="log" pointcut="execution(public * com.itheima.demo3.CustomerDaoImpl.save(..))"/>
            </aop:aspect>
        </aop:config>

完成测试
        @RunWith(SpringJUnit4ClassRunner.class)
        @ContextConfiguration("classpath:applicationContext.xml")
        public class Demo3 {
            @Resource(name="customerDao")
            private CustomerDao customerDao;
            @Test
            public void run1(){
                customerDao.save();
                customerDao.update();
                customerDao.delete();
            }
        }

Spring Day 2的更多相关文章

  1. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  2. 玩转spring boot——快速开始

    开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...

  3. Spring基于AOP的事务管理

                                  Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...

  4. [Spring]IoC容器之进击的注解

    先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...

  5. 学习AOP之透过Spring的Ioc理解Advisor

    花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...

  6. 学习AOP之深入一点Spring Aop

    上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...

  7. 学习AOP之认识一下Spring AOP

    心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...

  8. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  9. Spring之旅(2)

    Spring简化Java的下一个理念:基于切面的声明式编程 3.应用切面 依赖注入的目的是让相互协作的组件保持松散耦合:而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件. AOP面向切面 ...

  10. Spring之旅

    Java使得以模块化构建复杂应用系统成为可能,它为Applet而来,但为组件化而留. Spring是一个开源的框架,最早由Rod Johnson创建.Spring是为了解决企业级应用开发的复杂性而创建 ...

随机推荐

  1. 运维工具pssh和pdsh安装和使用

    1. pssh安装与使用 1.1 pssh安装 [root@server]# wget http://peak.telecommunity.com/dist/ez_setup.py [root@ser ...

  2. WPF 开发备忘录

    运营日: select t.*   from (select ab.*, bs.station_cn_name, bd.device_name           from audit_tvm_cas ...

  3. why microsoft named their cloud service Azure?

    best guess I can personally make is that because Azure literally means “bright blue color of the clo ...

  4. 吴恩达机器学习笔记36-正则化和偏差/方差(Regularization and Bias_Variance)

    在我们在训练模型的过程中,一般会使用一些正则化方法来防止过拟合.但是我们可能会正则化的程度太高或太小了,即我们在选择λ 的值时也需要思考与刚才选择多项式模型次数类似的问题. 我们选择一系列的想要测试的

  5. jQuery文档操作

    jQuery文档操作 1.jq文档结构 var $sup = $('.sup'); $sup.children(); // sup所有的子级们 $sup.parent(); // sup的父级(一个, ...

  6. 一条SQL语句在MySQL中如何执行的

    本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的. 在分析之前我会先带着你看看 MySQL 的基础架构, ...

  7. 机器学习入门10 - 正则化:简单性(Regularization for Simplicity)

    原文链接:https://developers.google.com/machine-learning/crash-course/regularization-for-simplicity 正则化指的 ...

  8. pycharm中配置启动Django项目

    1.先打开mange.py,然后再运行,会提示一堆东西,表示没有配置参数.在pycharm中点击edit configurations 编辑配置参数. 2.点开之后弹出如下对话框,在scrip par ...

  9. Gradle实现自动打包,签名,自定义apk文件名

    Gradle实现自动打包,签名,自定义apk文件名 什么是签名,签名有什么用 Android APP都需要我们用一个证书对应用进行数字签名,不然的话是无法安装到Android手机上的,平时我们调试运行 ...

  10. Kubernetes 中的核心组件与基本对象概述

    Kubernetes 是 Google 基于 Borg 开源的容器编排调度,用于管理容器集群自动化部署.扩容以及运维的开源平台.作为云原生计算基金会 CNCF(Cloud Native Computi ...