• Java——spring入门


    1.Spring的优点

    (1)方便解耦,简化开发。Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理。
    (2)AOP编程的支持。Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。
    (3)声明式事务的支持只需要通过配置就可以完成对事务的管理,而无需手动编程。
    (4)方便程序的测试。Spring对Junit4支持,可以通过注解方便的测试Spring程序。
    (5)方便集成各种优秀框架。Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis等)的直接支持。
    (6)降低JavaEE API的使用难度。Spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,是这些API应用难度大大降低。

    2.Spring的模块

    3.Spring IOC的底层实现原理

    最初两个类之间互相调用需要实现另一个类的对象。
    这样不利于解耦。之后就是面向接口编程。

    程序设计需要满足ocp原则,也就是open-close原则,
    对程序扩展是open的,对修改程序代码是close,
    需要尽量做到不修改程序的源码,实现对程序的扩展。

    之前我们使用工厂模式,来实现松耦合,但是单纯的使用工厂模式,并不彻底。

    spring通过工厂+反射+配置文件的方式来实现程序的解耦。
    比如可以这样实现:

    <bean id=“us” class="com.imooc.UserServiceImpl">
    
    class FactoryBean{
        public static Object getBean(String id){
            反射    
        }
    }

    通过传入id,来实例化对应的类对象。

    4.Spring快速入门

    开发流程:

          下载Spring开发包
      复制Spring开发jar包到工程
      理解IOC控制反转和DI依赖注入
      编写Spring核心配置文件
      在程序中读取Spring配置文件,通过Spring框架获得Bean,完成相应操作。

    1)使用maven构建项目
    2)导入项目依赖
      spring-core
      spring-context
      spring-beans
      spring-expression
      commons-logging
      log4j

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.2.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.2.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.2.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>4.2.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

    3)简单实现

    (1)传统方法

    a.创建接口类

    public interface UserService {
        public void sayHello();
    }

    b.实例化一个对象

    public class UserServiceImpl implements UserService {
        public  void sayHello() {
            System.out.println("Hello Spring");
        }
    }

    c.调用

    public void demo1(){
        UserService userService = new UserServiceImpl();
        userService.sayHello();
    }

    (2)Spring解决方式

    a.创建一个Spring配置文件

    <bean id="userService" class="com.imooc.ioc.demo1.UserServiceImpl"></bean>

    b.通过id来获取对应的对象

    public void demo2(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");   //创建Spring得工程
        UserService userService = (UserService) applicationContext.getBean("userService");  //通过工厂获取类
        userService.sayHello();
    } 

    既通过工厂管理类,后面通过ID来找对应的类,如何找到接口下的对应类了,此时我只需要通过类命,然后强转,就可以获得类对象。
    这样只需要通过类名,就可以获取类,同时又有接口的约束。

    5.IOC和DI的概念

     IOC Inverse of Control反转控制的概念,就是将原本在程序中手动创建UserService对象的控制权,交由SPring框架来管理,然后通过工厂来创建就可以了。

    DI Dependency Injection依赖注入的概念,就是在Spring创建这个对象的过程中,将这个对象所依赖的属性注入进去。

    在Spring中,只需要在配置文件中:

    <bean id="userService" class="com.imooc.ioc.demo1.UserServiceImpl">
        <!--设置属性-->
        <property name="name" value="李四" />
    </bean>

    然后就可以配置,spring会自动调用set和get方法。然后工厂类及其结构类自然不需要修改。

    依赖注入的目的是在代码之外管理程序组件的依赖关系,依赖注入减少了程序组件之间的耦合。

  • 相关阅读:
    超级楼梯
    hdu1040
    hdu2033(惭愧)
    hdu2032杨辉三角
    hdu1013Digital Roots
    hdu2031
    Linux信号(signal) 机制分析
    android init重启service(进程)
    [android] init进程 .rc文件中service、action的parsing
    oom_adj
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/12519515.html
Copyright © 2020-2023  润新知