zoukankan      html  css  js  c++  java
  • Spring(1)—初识

    1. Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
    2. 特点:
      轻量——从大小与开销两方面而言Spring都是轻量的。
      控制反转——Spring通过一种称作控制反转(IoC)的技术促进了低耦合。
      面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发
      容器——Spring包含并管理应用对象的配置和生命周期
      其中最重要的就是AOP和IOC
    3. 一个HelloWorld案例

    1.jar包

    commons-logging-1.1.1.jar
    spring-aop-4.0.0.RELEASE.jar
    spring-beans-4.0.0.RELEASE.jar
    spring-context-4.0.0.RELEASE.jar
    spring-core-4.0.0.RELEASE.jar
    spring-expression-4.0.0.RELEASE.jar

    2.类HelloWorld

    public class HelloWorld {
    
        public void hello(){
            System.out.println("欢迎学习Spring框架!");
        }
    }

    3.新建配置文件applicationContext.xml(已经安装了Spring插件),并添加配置

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        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-3.2.xsd">
    
    <!-- 配置Bean -->
        <bean id="helloWorld" class="com.test.hello.HelloWorld"></bean>
    </beans>

    4.测试类TestHelloWorld

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class TestHelloWorld {
    
        public static void main(String[] args) {
            //1.加载applicationContext.xml文件
            ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    
            //2.获取配配置中的实例
            HelloWorld helloWorld = (HelloWorld) ctx.getBean("helloWorld");
            helloWorld.hello();
    
        }
    }

    运行结果:

    Biz's setter...(这行字符是下一个案例中输出的,用于说明,一旦加载了applicationContext.xml配置文件中的Bean不管有没有执行这段代码,Spring容器都会立即向setter方法中执行注入)
    欢迎学习Spring框架!

    4 . 一个login案例

    因为上一个案例已经把jar包导进来了所以直接上代码
    ①目录结构
    这里写图片描述
    ②接口及接口的实现类
    接口:UserBiz、UserDAO
    实现类:UserBizImpl、UserDAOImpl

    //UserBiz
    public interface UserBiz {
    
        public boolean login(String username, String password);
    
    }
    //UserBizImpl
    import com.test.login.Biz.UserBiz;
    import com.test.login.dao.UserDAO;
    
    public class UserBizImpl implements UserBiz {
    
        //使用userDAO接口声明一个对象
        UserDAO userDAO;
        //并为其添加set方法,用于依赖注入
        public void setUserDAO(UserDAO userDAO) {
            this.userDAO = userDAO;
            System.out.println("Biz's setter...");
        }
    
        @Override
        public boolean login(String username, String password) {
            return userDAO.login(username, password);
        }
    
    }
    //UserDAO
    public interface UserDAO {
    
        public boolean login(String username, String password);
    
    }
    //UserDAOImpl
    import com.test.login.dao.UserDAO;
    
    public class UserDAOImpl implements UserDAO {
    
        @Override
        public boolean login(String username, String password) {
            if(username.equals("admin") && password.equals("123")){
                return true;
            }
            return false;
        }
    
    }

    ③配置applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        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-3.2.xsd">
    
    <!-- 配置Bean -->
        <bean id="helloWorld" class="com.test.hello.HelloWorld"></bean>
    
    <!-- 配置创建UserDAOImpl的实例 -->
        <bean id="userDAO" class="com.test.login.dao.Impl.UserDAOImpl"></bean>
    
    <!-- 配置创建UserBizImpl的实例,其实现原理是使用反射机制 -->
        <bean id="userBiz" class="com.test.login.Biz.Impl.UserBizImpl">
            <!-- 引用UserDAOImpl的Bean实例,其实现原理是使用setter方法 -->
            <property name="userDAO" ref="userDAO"></property>
        </bean>
    
    </beans>

    ④测试类TestSpringDI

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.test.login.Biz.UserBiz;
    
    public class TestSpringDI {
    
        public static void main(String[] args) {
            ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
            UserBiz userBiz =  (UserBiz) ctx.getBean("userBiz");
            System.out.println(userBiz.login("admin", "123"));
    
        }
    
    }

    ⑤结果:

    Biz's setter...
    true
    
  • 相关阅读:
    Socket send函数和recv函数详解
    isdigit()函数用法
    C语言的那些小秘密之字节对齐
    The Five Best Linux BitTorrent Clients
    怎么计算网站高峰期并发量和所需的带宽?
    软件需求包括3个不同的层次 业务需求、用户需求和功能需求
    右键删除选中的行总提示rowIndex
    SQL Server[转]SQL Server中临时表与表变量的区别
    面向对象的软件工程应用浅研
    OO开发思想:面向对象的开发方法(Object oriented,OO)
  • 原文地址:https://www.cnblogs.com/tengpengfei/p/10453971.html
Copyright © 2011-2022 走看看