Spring入门

作者: 烂吹笙 | 来源:发表于2018-04-06 16:06 被阅读0次

    Spring是一个轻量级开源的框架,它的核心是 Ioc(控制反转)DI(依赖注入)AOP(面向切面编程) 。它的优点是方便解耦,简化开发、AOP编程的支持、声明式事务的支持、方便程序的测试。方便继承各种优秀的框架、降低JavaEE API的使用难度。核心容器:Beans、Core、Context、Expression

    Spring分层

    Web层:Struts,Spring-MVC
    Service:Spring
    Dao层:Hibernate,Mybaits,jdbcTemplate
    

    Spring之Ioc

    Ioc(Inversion of Control) 就是控制反转,将我们的控制权交给了Spring

    • 1、需要以下jar包添加到我们的Web工程的lib中。也就是4个核心的jar

      • com.springsource.org.apache.commons.logging-1.1.1.jar
      • spring-beans-3.2.0.RELEASE
      • spring-context-3.2.0.RELEASE
      • spring-core-3.2.0.RELEASE
      • spring-expression-3.2.0.RELEASE
    • 2、工程src下新建一个app-spring.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.xsd">
        <!-- 配置Service
            <bean>:配置需要创建的对象
                id:用于之后从Spring容器中获取容器实例时使用
                class:需要创建实例的全限定类名 -->
        <bean id="userServiceId" class="com.wj.ioc.UserServiceImpl"></bean>
      </beans>
      
      
    • 3、写一个UserService接口和一个实现类

      UserService

      package com.wj.ioc;
      
      public interface UserService {
      
        public void addUser();
      }
      

      UserServiceImpl

      package com.wj.ioc;
      
      public class UserServiceImpl implements UserService{
      
        public void addUser() {
            System.out.println("addUser执行");
        }
      
      }
      
    • 4、测试

      package com.wj.ioc;
      
      import org.junit.Test;
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      public class TestIoc {
      
        @Test
        public void test1(){
            //不使用Spring的模式
            UserService service=new UserServiceImpl();
            service.addUser();
        }
      
        @Test
        public void test2(){
            //Spring的方式
            String xmlPath="com/wj/ioc/app-spring.xml";
            ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlPath);
            UserService service=(UserService) applicationContext.getBean("userServiceId");
            service.addUser();
        }
      }
      
      

      总结:通过xml配置Service的实现类,并且定义全路径以及id,然后在使用的时候无需使用new关键字创建Service,而是通过Spring的方式查找id拿到对象

    Spring之DI

    DI(Dependency Injection) 依赖注入

    • 1、同样需要以上的jar包,然后新建一个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.xsd">
      
        <!-- 创建Service -->
        <bean id="bookServiceId" class="com.wj.di.BookServiceImpl">
            <!--property属性注入  
                name:bean的属性名,通过setter方法获得
                ref:另一个bean的id值得引用
            -->
            <property name="bookDao" ref="bookDaoId"></property>
        </bean>
      
        <!-- 创建Dao实例-->
        <bean id="bookDaoId" class="com.wj.di.BookDaoImpl"></bean>
      </beans>
      
    • 2、写一个BookService接口和一个实现类、以及BookDao和实现类

      package com.wj.di;
      
      public interface BookDao {
      
        public void addBook();
      }
      
      package com.wj.di;
      
      public class BookDaoImpl implements BookDao{
      
        public void addBook() {
            System.out.println("DI addBook");
      
        }
      
      }
      
      package com.wj.di;
      
      public interface BookService {
      
        public void addBook();
      }
      
      
      package com.wj.di;
      
      public class BookServiceImpl implements BookService{
      
        //方式1:接口=实现类
      //    private BookDao bookDao=new BookDaoImpl();
        //方式2:接口+setter
        private BookDao bookDao;
        public void setBookDao(BookDao bookDao) {
            this.bookDao = bookDao;
        }
      
        public void addBook() {
            bookDao.addBook();
        }
      }
      
    • 测试

      package com.wj.di;
      
      import org.junit.Test;
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      public class TestDI {
      
        @Test
        public void test2(){
            //Spring的方式
            String xmlPath="com/wj/di/app-spring.xml";
            ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlPath);
            BookService bookService=(BookService) applicationContext.getBean("bookServiceId");
            bookService.addBook();
        }
      }
      
      

      总结:在Service的实现类中操作时,以前都是需要new一个Dao的。而使用Spring,就只需要在xml中配置Service中需要的Dao(使用property标签配置,然后就会创建),通过setterDao方法设置了值


    相关文章

      网友评论

        本文标题:Spring入门

        本文链接:https://www.haomeiwen.com/subject/judshftx.html