spring学习笔记_spring入门

导入spring核心架包:

  • 标号一:日志需要的架包
  • 标号而:spring的核心架包

 

 

 spring核心IOC的实现和理解:

关键就是配置applictionContext.xml文件

在applicationContext.xml文件中引入bean schema约束

<?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">
</beans>

当然如果使用的是Sring Tool Suite工具编程,可以之间new里面找到一个 Spring Bean config file自动生成该约束

问题:发现引入规范约束后,没有关联对应的配置,原因是:

 

配置本地提示:点击eclipse属性——>选择XML Catalog

 

 

 

 基础配置弄好了,可以尝试测试第一个Bean的创建了:在上面的applictionContext.xml中输入下列代码------>

<!-- 
        bean:是spring工厂帮你new的一个对象(机制:反射机制)
        class:要new的对象的类型的字符串表示形式(一定全类名)
        id/name:标识对象的名字,用来获取bean对象用的标识。习惯上,这个名字命名为接口的名字首字母小写
     -->
    <bean id="userDao"  class="com.igeek.spring.UserDaoImpl"/>

下面就要在他的逻辑实现类中测试啦

public class UserServiceImpl implements IUserService{
    
    public void login() {
        System.out.println("UserServiceImpl-service层被调用了。。。");
        //spring的配置方式,IOC控制反转
        //构建一个spring的工厂,使用applicationContext.xml(spring的核心配置文件)获取对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        //从spring工厂中使用对象的标识id获取对象,这里就是ApplicationContext.xml文件中的  <bean id="userDao" class="com.igeek.spring.UserDaoImpl"/>
        IUserDao userDao = (IUserDao) ac.getBean("userDao");
        userDao.findByUsernameAndPassword();
    }
}

那如何理解IOC和DI呢?

IOC即是:控制反转,就是在传统代码是一层一层new对象来调用,高度耦合的情况下,为避免高耦合而设计的解决方案:将获得依赖对象的过程反转了,就是将你的new过程交给spring容器(IOC容器)去操作

而DI:即依赖注入---->.就是将获得依赖对象的过程由自身管理变成由IOC容器主动注入

简而言之就是DI将IOC更加的操作简单化,全程由spring容器为你解决new对象的过程

下面就看看是怎么DI的:

 <!-- 
    ioc
        bean:是spring工厂帮你new的一个对象(机制:反射机制)
        class:要new的对象的类型的字符串表示形式(一定全类名)
        id/name:标识对象的名字,用来获取bean对象用的标识。习惯上,这个名字命名为接口的名字首字母小写
     -->
    <bean id="userDao"  class="com.igeek.spring.UserDaoImpl"/>
    <!--
    service 
    di:必须双方都是bean:在创建service的时候,主动将dao的依赖对象注入交给serivce
     -->
    <bean name="userService" class="com.igeek.spring.UserServiceImpl">
        <!-- property:
        setter属性注入
            * name:setter属性的名字,和类一致。如果setXxx,这里xxx,setUserDAO-userDAO
            * spring会自动调用setUserDao(IUserDao userDao)方法
            * ref:spring容器中定义的bean(对象)的名字
         -->
        <property name="userDao" ref="userDao"/>
    </bean>

 

BeanFactoryFactoryBean的区别?

BeanFactory:是一个工厂(其实是构建了一个spring上下文的环境,容器),用来管理和获取很多Bean对象,例如:加载applicationContext.xml文件。

FactoryBean:是一个Bean生成工具,是用来获取一种类型对象的Bean,它是构造Bean实例的一种方式。

posted @ 2020-03-06 12:00  我的二天  阅读(147)  评论(0编辑  收藏  举报