zoukankan      html  css  js  c++  java
  • 寒假day02-spring框架

    入门案例:IoC【掌握】

    1.1 导入jar

    . 4 + 1   4个核心(beans、core、context、expression + 1个依赖(commons-loggins...jar)

     

     

     

    1.2 目标类

    . 提供UserService接口和实现类

    . 获得UserService实现类的实例

    之前开发中,直接new一个对象即可。

    学习spring之后,将由Spring创建对象实例--> IoC 控制反转(Inverse of  ControlIOC创建对象的权限由自己反转给了spring)

    之后需要实例对象时,从spring工厂(容器)中获得,需要将实现类的全限定名称配置到xml文件中

    public interface UserService {

     

    public void addUser();

     

    }

     

    public class UserServiceImpl implements UserService {

     

    @Override

    public void addUser() {

    System.out.println("a_ico add user");

    }

     

    }

     

    1.3 配置文件

    .位置:任意,开发中一般在classpath下(src)

    .名称:任意,开发中常用applicationContext.xml(在公司中看见项目里有这个名肯定就是用了spring)

    .内容:添加schema约束

    约束文件位置:spring-framework-3.2.0.RELEASEdocsspring-framework-referencehtml xsd-config.html

    <?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.itheima.a_ioc.UserServiceImpl"></bean>

    </beans>

     

     

    1.4 测试

    public class TestIoc {

    /**

    @Test

    public void demo01() {

    //之前的开发

    UserService userService=new UserServiceImpl();

    userService.addUser();

     

    } **/

    @Test

    public void demo02() {

    //spring容器获得

    //1 获得 容器

    String xmlPath="com/itheima/a_ioc/beans.xml";

    ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlPath);

    //2 获得内容(不需要自己new,都是从spring容器中获得)

    UserService userService=(UserService) applicationContext.getBean("userServiceId");

    userService.addUser();

     

    }

     

    }

    入门案例:DI【掌握】

    . DI Dependency Injection ,依赖注入

    is a :是一个,继承。

    has a:有一个,成员变量,依赖(拥有使用权)。

    class B {

               private A a;   //B类依赖A类

            }

    依赖:一个对象需要使用另一个对象

    注入:通过setter方法进行另一个对象实例设置。

    . 例如:

    class BookServiceImpl{

            //之前开发:接口 = 实现类  (service和dao耦合)

    //private BookDao bookDao = new BookDaoImpl();

      //spring之后 (解耦:service实现类使用dao接口,不知道具体的实现类)

    private BookDao bookDao;

    setter方法

       }

    模拟spring执行过程

    创建service实例:BookService bookService = new BookServiceImpl() -->IoC  <bean>

    创建dao实例:BookDao bookDao = new BookDaoImpl() -->IoC

    将dao设置给service:bookService.setBookDao(bookDao); -->DI   <property>

     

    2.1 目标类

    .创建BookService接口和实现类

    . 创建BookDao接口和实现类

    .将dao和service配置 xml文件

    .使用api测试

    2.1.1 dao

    public interface BookDao {

     

    public void addBook();

     

    }

    public class BookDaoImpl implements BookDao {

     

    @Override

    public void addBook() {

    System.out.println("di  add book");

    }

     

    }

     

    2.1.2 service

     

    public interface BookService {

     

    public abstract void addBook();

     

    }

    public class BookServiceImpl implements BookService {

     

    // 方式1:之前,接口=实现类

    // private BookDao bookDao = new BookDaoImpl();

    // 方式2:接口 + setter

    private BookDao bookDao;

    public void setBookDao(BookDao bookDao) {

    this.bookDao = bookDao;

    }

     

    @Override

    public void addBook(){

    this.bookDao.addBook();

    }

     

    }

     

     

    2.2 配置文件

     

     

    <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">

    <!--

    模拟spring执行过程

    创建service实例:BookService bookService = new BookServiceImpl() IoC  <bean>

    创建dao实例:BookDao bookDao = new BookDaoImpl() IoC

    dao设置给service:bookService.setBookDao(bookDao); DI   <property>

     

    <property> 用于进行属性注入

    name: bean的属性名,通过setter方法获得

    setBookDao ##> BookDao(去掉set)  ##> bookDao(首字母小写)

    ref :另一个bean的id值的引用

     -->

     

    <!-- 创建service -->

    <bean id="bookServiceId" class="com.itheima.b_di.BookServiceImpl">

    <property name="bookDao" ref="bookDaoId"></property>

    </bean>

     

    <!-- 创建dao实例 -->

    <bean id="bookDaoId" class="com.itheima.b_di.BookDaoImpl"></bean>

     

     

    </beans>

     

     

    2.3 测试

    @Test

    public void demo01(){

    //从spring容器获得

    String xmlPath = "com/itheima/b_di/beans.xml";

    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);

    BookService bookService = (BookService) applicationContext.getBean("bookServiceId");

     

    bookService.addBook();

     

    }

  • 相关阅读:
    【转】VC 隐藏模块、MFC 改变窗口类名
    【转】Reason: The specified virtual disk needs repair.
    关于CreateProcess函数一些经验
    利用NtQuerySystemInformation函数遍历进程,遍历线程,获取线程挂起或运行状态
    uefi安装win7,deepin15双系统后grub没有windows选项
    X64下的虚拟地址到物理地址的转换
    WinDBG 技巧:列出模块(DLL/EXE)里面所有的符号(symbol)
    windows7内核分析之x86&x64第二章系统调用
    使用VS Code写PHP并进行调试
    使用CreateProcess创建新的process 并返回process运行结束返回值
  • 原文地址:https://www.cnblogs.com/wyl814922595/p/12254111.html
Copyright © 2011-2022 走看看