zoukankan      html  css  js  c++  java
  • Spring Day 2

    **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();
                }
            }

  • 相关阅读:
    Larval API 跨域问题解决
    php常用接口
    phpstudy+nigix+larval伪静态配置
    js、jquery让滚动条到底部
    JS 数组转json和json转数组
    python 基础(十七)内置函数
    python 基础(十六)生成器用法举例
    python 基础(十五)生成器
    python 基础(十四)装饰器
    python基础(十三)模块的定义、导入
  • 原文地址:https://www.cnblogs.com/chenxiaozhi/p/9535159.html
Copyright © 2011-2022 走看看