• Java EE学习笔记(一)


    spring入门程序:

    1、导入Spring的4个基础包以及commons-logging的JAR包复制到lib目录中

    2、src->com.itheima.ioc包下:

    ①UserDao.java

    1 package com.itheima.ioc;
    2 
    3 public interface UserDao { // 创建接口UserDao
    4     public void say(); // 只声明say()方法,不能定义
    5 }

    ②UserDaoImpl.java

    1 package com.itheima.ioc;
    2 
    3 public class UserDaoImpl implements UserDao{ // 创建接口UserDao的实现类UserDaoImpl
    4     public void say() {  // 需要定义接口中的say()方法
    5         System.out.println("userDao say hello World !");
    6     }
    7 }

    ③控制反转测试类:TestIoC.java

     1 package com.itheima.ioc;
     2 
     3 import org.springframework.context.ApplicationContext;
     4 import org.springframework.context.support.ClassPathXmlApplicationContext;
     5         
     6 public class TestIoC {
     7     public static void main(String[] args) { 
     8         // 1、初始化Spring容器,加载配置文件
     9         String xmlPath = "beans.xml";
    10         ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath); 
    11         
    12         // 2、通过容器获取userDao的Bean实例userDaoID
    13         UserDao userDao = (UserDao) applicationContext.getBean("userDaoID");
    14         
    15         // 3、调用实例中的say()方法
    16         userDao.say();
    17         
    18         //不需要自己new,都是从Spring容器直接获得
    19         // 之前的实现:new 接口的实例
    20         //UserDao userDao = new UserDaoImpl(); 
    21         //userDao.say();
    22     }
    23 }

    ④UserService.java

    1 package com.itheima.ioc;
    2 
    3 public interface UserService { // 创建接口UserService
    4     public void save(); // 只声明save()方法,不能定义
    5 }

    ⑤UserServiceImpl.java

     1 package com.itheima.ioc;
     2 
     3 public class UserServiceImpl implements UserService{ // 创建接口UserService的实现类UserServiceImpl
     4     // 之前的做法:方式1:接口 接口对象= new 实现类(),即
     5     //private UserDao userDao = new UserDaoImpl(); 
     6     //有了Spring之后(解耦:UserServiceImpl实现类使用了成员变量UserDao接口,不用知道接口具体的实现类),
     7     // 方式2:接口+setter方法
     8     // 1)、声明属性UserDao,(依赖的接口对象)
     9     private UserDao userDao;
    10     
    11     // 2)、添加UserDao属性的setter方法,Spring才能将创建的接口对象userDao赋值给调用者的成员变量userDao(接口实例对象)!!!
    12     public void setUserDao(UserDao userDao) {
    13         this.userDao = userDao;
    14     }
    15     
    16     // 3、实现接口中的方法,需要重新定义
    17     public void save() {
    18         // 调用成员变量userDao中的say()方法,并执行输出语句
    19         this.userDao.say();
    20         System.out.println("userService add a user!");
    21     }
    22 }

    ⑥依赖注入测试类:TestDI.java

     1 package com.itheima.ioc;
     2 
     3 import java.nio.channels.AcceptPendingException;
     4 import org.springframework.context.ApplicationContext;
     5 import org.springframework.context.support.ClassPathXmlApplicationContext;
     6         
     7 public class TestDI {
     8     public static void main(String[] args) { 
     9         // 1、初始化spring容器,加载配置文件
    10         String xmlPath = "beans.xml";
    11         ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath); 
    12         // 2、通过容器获取UserService的Bean实例userServiceID
    13         //UserService userService = (UserService) applicationContext.getBean("userServiceID");
    14         // 有了XML配置文件,那么Spring就可以通过配置文件中的bean-id来创建我们需要的对象,下面这样写就不用将其强转了
    15         UserService userService = applicationContext.getBean("userServiceID", UserService.class);
    16         // 3、调用实例中的save()方法
    17         userService.save();
    18     }
    19 }

    ⑦配置文件:beans.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4 xsi:schemaLocation="http://www.springframework.org/schema/beans 
     5                     http://www.springframework.org/schema/beans/spring-beans.xsd">
     6     <!-- 上面是Spring的约束配置,无需手写,直接查文档 --> 
     7     <!-- 将指定类配置给Spring,让Spring创建其对象的实例 -->
     8     <bean id="userDaoID" class="com.itheima.ioc.UserDaoImpl" ></bean>
     9     <!-- 创建一个id为userDaoID的Bean实例,其中class属性用于指定需要实例化Bean的类 -->
    10                   
    11     <!-- 添加一个id为userServiceID的Bean的实例 -->
    12     <bean id="userServiceID" class="com.itheima.ioc.UserServiceImpl">
    13     <!-- 将id为userDaoID的Bean实例注入到userService实例中,
    14             即被依赖对象userDao也由Spring来管理,通过这种方法就降低了耦合度,完全由Spring的Bean来管理
    15     -->
    16     <property name="userDao" ref="userDaoID"></property>
    17     <!-- property: 用于对属性赋值(注入),底层将执行setter方法
    18          name:setter方法参数实例名,通过setter方法获得        
    19          ref:另一个bean的id值(接口实例类)的引用,创建userDao对象的bean的id值userDaoID        
    20 具体执行过程:先创建UserService对象,然后在根据property中的ref找到userDaoID并创建UserDao对象,
    21            然后根据property中的name,通过setter方法对其赋值,这样就完成了依赖注入。
    22     --> 
    23     </bean>     
    24 </beans>

    3、执行结果:

  • 相关阅读:
    zoj 3715 K
    bzoj 2002(弹飞绵羊) 分块
    最大01矩阵(悬线法)
    csu 1809 Parenthesis(线段树)
    csu 1804(有向无环图)
    csu 1803(2016)
    RCC 2017 Qual 1 Mail.Ru, April 2, 2017 Problem C. Magic Artifact
    Unmarshaller解析xml文件
    sax解析xml文件,封装到对象中
    cas环境搭建
  • 原文地址:https://www.cnblogs.com/acgoto/p/10595288.html
Copyright © 2020-2023  润新知