Spring IOC简单介绍及基础使用

本文详细介绍了Spring框架的核心概念,包括其轻量级特性、组成部分(如SpringAOP、SpringORM等)、SpringIOC基础、控制反转与依赖注入原理,以及如何通过XML配置、注解方式和Spring与MyBatis的整合来管理对象和数据库操作。
摘要由CSDN通过智能技术生成
一、Spring 概述

    spring是一个开源免费的框架,为解决企业应用开发的复杂性而创建的。轻量级(耦合性低)解决方案,模块化,非侵入式

二、Spring 的组成

    1. Spring AOP :面向切面的管理

    2. Spring ORM :管理 MyBatis(iBatis)

    3. Spring DAO :也就是Spring的JDBC

    4. Spring Web :web支撑模块,和Spring Web MVC一起

    5. Spring Web MVC

    6. Spring Context :是IOC的模块

    7. Spring Core : 核心,管理对象的模块,是Spring的基础支撑

三、Spring IOC基础
    1.控制反转IOC(inversion of Control)

    是指容器控制程序对象之间的关系,而不是传统实现中,有由程序代码直接操控控制权由应用代码中转到了外部容器中,控制权的转移是所谓反转。

    依赖注入:即组件之间的依赖关系由容器在运行期间决定的,即容器动态地将某种依赖关系注入到组件之中。

白话理解:IOC就是依赖注入,因为IOC控制反转所以依赖注入。之前想要用别的类的方法,是通过自己new对象去实现他的方法,而现在是由IOC容器new好之后带过来给你,所以比较依赖于Spring IOC容器,这种new对象的控制权由自己换成别人,这就是控制反转。

2.加载过程

①(applicationContext.xml)读取配置文件

②POJO 根据数据创建和组装Bean ---> Spring IoC Container <---  ③从容器中获取Bean

3.applicationContext的实现的四种方式:
  • FileSystemXmlApplicationContext :根据项目找
  • ClassPathXmlApplicationContext :根据resource是文件夹,找配置文件。
  • XmlWebApplicationContext:在Web环境下初始化监听器的时候会加载该类。 
  • AnnotationConfigApplicationContext:根据注解的方式启动 Spring 容器。
四、Spring IOC实现方式
1.xml方式(属性)
①新建quickstar模板项目
②导入Spring-context 包
③在resources文件下面新建XML配置文件,按模板建,名称先标准化起为:applicationContext.xml
④在applicationContext.xml文件中注册bean :
<bean id = "新产生的对象名" class = "要产生对象的类地址.数据类型">
   <property name="属性名" ref="引用" value="值" />  //常见类型赋值
</bean>

//集合赋值
<bean id = "新产生的对象名" class = "数据类型">
    <property name="集合名">
    	<set|list|array>
        	<value>值</value>
        </set|/list|/array>
    </proprety>
    
	//map集合赋值
    <property name="集合名">
    	<map>
        	<entry key="键值" value="值"/>
        </map>
</bean>

//引用赋值
<bean id="新产生的对象名" class="数据类型">
    <property name="赋值对象名称" ref="引用对象名" />
</bean>

 ⑤加载applicationContext.xml文件:

ApplicationContext bean(只是名字) = new ClassPathXmlApplicationContext("applicationContext.xml");
bean.getBean("参数");//byName
bean.getBean("",DemoA.class); //byName + byType
bean.getBean(DemoA.class); //byType
2.xml方式(构造器)

    ①给构造器赋值方式:

<bean id="" class="">
    <constructor-arg name="名字" index="构造器中变量的索引号(从0开始)" ref="引用" value="值"  type="类型"(可省略)/>
</bean>

3.IOC模块 注解方式

a)创建对象的注解:

@Component启动Spring后,会自动把它转成容器管理的Bean。
@Repository用于对DAO实现类进行注解。
@Service用于对业务层注解,但是目前该功能与 @Component 相同。(Biz包)
@Controller用于对控制层注解,但是目前该功能与 @Component 相同。(其他包)
  • 以上四个在规则上都一样,但是规范上不一样,不同的注解在规范上表达不同的意思;
  • 注解时未命名,则默认名字为类名首字母小写,若要命名,则如:@Controller(value="名") 缩写可省略value;

b)赋值注解:

@Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入。
如:@Resource(name="名"),如果不写名字,则以当前给值的变量名来,找不到则按类型找,若指定name,则按照指定名字来找,不会再按类型找了。
@Autowired默认是按照类型装配注入的,后面不需要参数。如果想按照名称来转配注入,则需要结合@Qualifier一起使用。
@Value通过@value可以个给想要的属性赋值,如:@value("值"),且值会自动类型转换。
@Qualifier@Qualifier("XXX") 中的 XX是 Bean 的名称,所以 @Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。它不能独立写,要与@Autowired搭配写。
4、Spring 管理 mybatis
①导入jar包:spring-context、mysql-connector-java、mybatis、mybatis-spring、druid、spring-jdbc(版本应与spring-context尽量保持一致)
②在resources文件夹中创建spring.xml文件:
        a) 创建数据源 
        b)创建一个会话工厂
        c) 加载mapper包内容,产生mapper的代理对象
<!--创建数据源-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="name" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/bd2006?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=UTC&amp;rewriteBatchedStatements=true"/>
        <property name="username" value="root"/>
        <property name="password" value="a123456"/>
    </bean>

    <!--创建一个会话工厂-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!--加载mapper包的内容,产生mapper的代理对象-->
    <bean id="msc" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="org.example.mapper(就是具体要扫描的mapper包地址)"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值