**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. Py福利,基于uiautomatorviewer 的Python 自动化代码自动生成工具分享(jar已发布GitHub,欢迎Star)

    前言做UI自动化无论你用SDK自带的uiautomatorviewer还是Macaca还是Appium自动的inspector,代码最多的就是那些繁琐重复的找元素后点击,输入,长按.....等.现在偷 ...

  2. 你不知道的 #include

    1.#include 指令 C++的程序中带 “#” 号的语句被称为宏定义或编译指令.#include在代码中是包含和引用的意思,例如:"#include <iostream>& ...

  3. Windows的奇巧淫技(为什么GIF显示不出来??)

    谁的电脑里没点小秘密?东藏西藏到最后自己都找不到了有木有?今天教大家个隐藏文件的高招: 将任意文件隐藏到图片中!怎么样?再也不用建什么「马列主义哲学」的文件夹啦!

  4. python基础学习记录一

    1.如果脚本中带有中文(中文注释或者中文字符串,中文字符串前面需要在前面加u),且需要在文件头注明编码,并将UTF-8编码格式 #-*-coding:utf-8 -*- printf u'你好,WOR ...

  5. Vipe框架构思记

    准备着手写一个JAVA框架,基于公司目前的框架提取出来.当然公司现在的框架也是我搭建的.在这整理一下思路. 框架名称:Vipe AOP,IOC容器:Spring MVC:Spring MVC ORM: ...

  6. Canal学习笔记(服务端)

    canal服务端 canal服务端有两种运行模式,一种单机模式,一种HA运行模式(zk保证) 单机模式:同步的binlog节点信息保存在本地(/conf/{自定义分区文件夹}/),meta.dat H ...

  7. java数据结构面试问题—快慢指针问题

    上次我们学习了环形链表的数据结构,那么接下来我们来一起看看下面的问题, 判断一个单向链表是否是环形链表? 看到这个问题,有人就提出了进行遍历链表,记住第一元素,当我们遍历后元素再次出现则是说明是环形链 ...

  8. Android6.0以上关于RecyclerView显是不全的问题

    Android6.0以上关于RecyclerView显是不全的问题 需求描述 适配的时候发现Android 6.0以上,RecyclerView显示不全,以下是没有问题的.这个时候查看布局文件,可以看 ...

  9. Kali学习笔记5:被动信息收集工具集

    1.Shodan SHODAN搜索引擎不像百度谷歌等,它们爬取的是网页,而SHODAN搜索的是设备. 物联网使用过程中,通常容易出现安全问题,如果被黑客用SHODAN搜索到,后果不堪设想. 网站:ht ...

  10. Oracle优化器基础知识之访问数据的方法

    目录 一.访问数据的方法 1.直接访问数据 2.访问索引 一.访问数据的方法 Oracle访问表中数据的方法有两种,一种是直接表中访问数据,另外一种是先访问索引,如果索引数据不符合目标SQL,就回表, ...