Spring框架入门

1. spring是一个轻量级开源的JAVAEE框架。
2. Spring提高了IOCAOP
        IOC:控制反转:把创建java对象的权力交于spring容器来管理。
        AOP:面向切面编程.在不改变源代码的前提下可以扩充功能。
3. spring的特点:
        方便解耦,简化开发----层层之间的依赖降低。
声明式事务的支持:
        方便程序的测试:----提供单元测试jar
        方便集成各种优秀框架---集成第三方的框架---mybatis

为什么用Spring框架:

Spring的作用是被标榜为程序之间的解耦,spring能降低不同模块之间的耦合度,原因就是在程序开发里不同模块之间信息的沟通是通过对象传递完成的,而对象能否顺利传递就是要合理的构建好对象,而管理好对象的构建方式就能管理好对象传递,这就是spring给系统架构设计带来的好处。


引入依赖:

<dependencies> 
<dependency> 
<groupId>org.springframework</groupId> 
<artifactId>spring-webmvc</artifactId> 
<version>5.2.15.RELEASE</version>
 </dependency> 
</dependencies>

创建Spring的配置文件

<?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">
    <bean class="cn.wd.UserDao2" id="userDao"/>
    <bean class="cn.wd.StudentDao" id="student"/>
</beans>

Spring的IoC的底层实现原理
这里先给出结论:Spring的IoC的底层实现原理是工厂设计模式+反射+XML配置文件。 就拿持久层(也即dao层,data access object,数据访问对象)的开发来说,官方推荐做法是先创建一个接口,然后再创建接口对应的实现类。所以,这里,我会以dao层的开发为例来证明Spring的IoC的底层实现原理就是工厂设计模式+反射+XML配置文件。
首先,创建一个Userdao接口。


我们要创建个UserDao

\

另外:

        public static void main(String[] args) {
        //读取配置文件
        ClassPathResource resource = new ClassPathResource("application.xml");
        //解析配置文件
        XmlBeanFactory factory = new XmlBeanFactory(resource);
        Object userDao = factory.getBean("userDao2"); //拿到哪个bean时才会调用构造函数创建该bean.

        //当使用到bean对象时,spring才会帮你创建.
        Object people = factory.getBean("people");
    }


    public static void main(String[] args) {
        //在加载spring容器时,spring会把配置文件中所有的bean创建好。
        ApplicationContext app=new ClassPathXmlApplicationContext("application.xml");

        IUserDao userDao = (IUserDao) app.getBean("userDao2");
        userDao.show();
    }


 

测试:

只要在application.xml  里面配合过的


Spring中 BeanFactory和ApplicationContext的区别

BeanFactory 才是 Spring 容器中的顶层接口。
ApplicationContext 是它的子接口。
单例模式下创建对象的时间点不一样:
ApplicationContext:(饿汉模式)只要一读取配置文件,马上就会创建配置文件中配置的对象。
BeanFactory:(懒汉模式)什么时候getBean("id"),也就是说当根据id获取对象时,才会创建。
 


过去bean的方式

1) 通过bean.xml文件中bean标签的id的值获取bean(使用默认构造方法)

        IUserDao iUserDao= (IUserDao) app.getBean("userDao");

2)通过类型去获取

        IUserDao userDao = app.getBean(IUserDao.class);

        确保bean的类型是唯一的 不然会报错:

        org.springframework.beans.factory.NoUniqueBeanDefinitionException

        C 通过 id + 类型去获取

3)通过 id + 类型去获取

IUserDao userDao = app.getBean("userDao2", IUserDao.class);
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值