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

  • 相关阅读:
    【POJ 1958】 Strange Towers of Hanoi
    【HNOI 2003】 激光炸弹
    【POJ 3263】 Tallest Cow
    【POJ 2689】 Prime Distance
    【POJ 2777】 Count Color
    【POJ 1995】 Raising Modulo Numbers
    【POJ 1845】 Sumdiv
    6月16日省中集训题解
    【TJOI 2018】数学计算
    【POJ 1275】 Cashier Employment
  • 原文地址:https://www.cnblogs.com/chenxiaozhi/p/9535159.html
Copyright © 2011-2022 走看看