**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. let,const,var

    1.const定义的变量不可以修改,而且必须初始化. 1 const b = 2;//正确 2 // const b;//错误,必须初始化 3 console.log('函数外const定义b:' + ...

  2. Java程序CPU使用率过高

    Java程序CPU使用率过高 通过top命令找到使用率过高的java进程PID 根据进程号查找线程TID:ps -mp PID -o THREAD,tid,time 将TID转换成16进制:print ...

  3. java 的原码、补码、反码小总结

    先看一个代码吧: int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); 这个应该很熟悉吧,是 ja ...

  4. Exp3 免杀原理与实践 ——20164325王晓蕊

    一.实践基本内容 1.实践目标 (1) 正确使用msf编码器(√),msfvenom生成如jar之类的其他文件(√),veil-evasion(√),加壳工具(√),使用shellcode编程(√) ...

  5. 6-使用requests库封装类处理get/post请求

    1.request安装 1)pip安装,直接pip install requests 2)下载离线包安装,加压后,命令行进入路径,执行python setup.py install 2.创建工程 注意 ...

  6. The test form is only available for requests from the local machine

    使用浏览器测试Web服务时出现提示“The test form is only available for requests from the local machine.”的解决办法 在Web服务项 ...

  7. iOS开发之Alamofire源码解析

    今天博客中的Alamofire源码的版本是以3.4版本为例.上篇博客系统的对NSURLSession相关的东西进行了详细的解析,详情请看<详解NSURLSession>,为了就是给本篇博客 ...

  8. post上传和压缩、插件模拟请求

      gzip gzip一种压缩方式,或者是文件形式,它主要用于网络传输数据的压缩 gzip压缩好不好用 浏览器:网速一定.内容越小.请求响应的速度是不是更快 手机server:返回数据类型是json/ ...

  9. Java程序员的成长之路

    阅读本文大概需要 8.2 分钟. tips:虽然题目是写的Java程序员,但对其他语言的开发来说也会有借鉴作用. 本篇介绍的是大体思路,以及每个节点所需要学习的书籍内容,如果大家对详细的技术点有需要, ...

  10. 第33节:Java面向对象中的异常

    Java中的异常和错误 Java中的异常机制,更好地提升程序的健壮性 throwable为顶级,Error和Exception Error:虚拟机错误,内存溢出,线程死锁 Exception:Runt ...