zoukankan      html  css  js  c++  java
  • Spring的大框架

    初识Spring:

          Spring作者:Rod Johnson

    Spring框架由20个模块组成,这些模块分成六个部分,分别是Core Container,Data Access/Integration,Web,AOP,Instrumentation和Test.

    Spring Core是框架的最基础的部分,提供了IoC特性。Spring Context为企业级开发提供了遍历和集成的工具。

    Spring Aop是基于Spring Core的符合规范的切面编程的实现

    Spring JDBC提供了提供了JDBC的抽象层,简化了JDBC编码

    Spring ORM对市面上流行的ORM框架提供了支持

    Spring Web为Spring在Web应用程序中的使用提供了支持

    Spring 体系结构图:

    最基础部分========Spring IoC

    控制反转   (依赖注入)  面向对象编程的一种设计理念,降低程序代码之间的耦合度

    先定义持久化方法:

    
    
    public interface IUserBiz {
        //隔离的作用
        public void save(User user);
    }
    
    

    实现对User类的持久化操作

    public class UserBiz implements IUserBiz {
        private IDao dao;
        public void save(User user) {
            dao.save(user);
        }
        public void setDao(IDao dao) {
            this.dao = dao;
        }
    }

    用户业务类,实现对User功能的业务管理

    public class UserServiceImpl implements UserService
    {
    
    private UserDao dao=new UserDaoImpl();
    public void addNewUser(User user){
    dao.save(user);
    }
    
    }

    bean文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd">
             <!--IOC-->
        <bean id="happyService" class="cn.zixin.service.HappyService">
            <!--DI 依赖注入-->
            <property name="info" value="Spring"></property>
        </bean>
    
        <!--准备一个彩色墨盒-->
        <bean id="colorInk" class="cn.zixin.printer.ink.GrayInk"></bean>
        <!--准备一个B5纸-->
        <bean id="B5paper" class="cn.zixin.printer.paper.A5Paper"></bean>
        <!--准备打印机-->
        <bean id="printer" class="cn.zixin.printer.print.Printer">
            <property name="ink" ref="colorInk"></property>
            <property name="paper" ref="B5paper"></property>
    
        </bean>
    
        <!--dao-->
        <bean id="UserDao" class="cn.zixin.aop.UserDao"></bean>
        <!--service-->
        <bean id="UserBiz" class="cn.zixin.aop.service.UserBiz">
               <property name="dao" ref="UserDao"></property>
        </bean>
        <!--增强配置-->
        <!--前置配置-->
        <bean id="LoggerAfter" class="cn.zixin.aop.LoggerAfter"></bean>
        <!--后置配置-->
        <bean id="LoggerBefore" class="cn.zixin.aop.LoggerBefore"></bean>
    
        <!--Aop配置-->
        <aop:config>
            <aop:pointcut id="pointcut" expression="execution(* *..service.*.*(..))"></aop:pointcut>
            <aop:advisor advice-ref="LoggerAfter" pointcut-ref="pointcut"/>
            <aop:advisor advice-ref="LoggerBefore" pointcut-ref="pointcut"/>
        </aop:config>
    </beans>

    使用<BEAN>的一个组件时   ----------    id用来访问的唯一名称  name属性指定

    测试类:

    package cn.zixin.test;
    
    import cn.zixin.aop.User;
    import cn.zixin.aop.service.IUserBiz;
    import cn.zixin.printer.print.Printer;
    import cn.zixin.service.HappyService;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * Created by benxin on 2017/7/22.
     */
    public class FirstSpringTest {
    
        @Test
        public void firstTest(){
            ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
            HappyService service=(HappyService) context.getBean("happyService");
            service.work();
        }
        @Test
        public void firstTests(){
            ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
            Printer printer = (Printer) context.getBean("printer");
            printer.print();
        }
        @Test
        public void aop() {
            ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
            IUserBiz biz=(IUserBiz)ctx.getBean("UserBiz");
            User user=new User();
            biz.save(user);
            System.out.println("success!");
        }
    }
  • 相关阅读:
    读完此文让你了解各个queue的原理
    借汇编之力窥探String背后的数据结构奥秘
    汇编高手带你玩转字符串,快上车!
    语雀调研
    产品技能一:抽象能力
    我所认知的敏捷开发
    产品经理需要的技能,我有吗?
    孙正义采访:接下来的30年,一切将被重新定义
    5G小白鼠
    goto语句为啥不受待见
  • 原文地址:https://www.cnblogs.com/chengzixin/p/7227825.html
Copyright © 2011-2022 走看看