Spring IoC

Spring: 核心

Spring IoC 依赖对象(控制反转 依赖注入)

Spring AOP

Spring 事务

EJB(企业级java baen)

重点在于分布式和事务

JTA: 分布式事务

JMS:解耦


Spring IoC 依赖对象(控制反转 依赖注入)

创建对象 管理对象间的依赖关系 , bean的生命周期

inversion of Control 中文 控制反转

创建控制对象的控制权,以前是我们自己创建对象,反转的意思就是将创建对象的控制权交出去,给Spring 容器创建 (控制反转)

DI(依赖注入)

Dependency inection

获取对象的过程被反转了

总结:

IoC 创建对象的控制权交给了Spring容器(将创建对象交给别人创建)

DI 解决对象之间的依赖关系

注册方式:

  • xml注册(SSM)

    什么情况下使用xml注册:第三方框架的类使用xml 注册。

  • 注解注册

    ​ 自己写的可以使用注解注册,


@Configuration ssm 项目 xml + 注解方式

​ springboot java config+ 注解方式

Spring-context.xml 配置文件注册:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
<!--Spring 核心配置文件-->
<!--    spring 创建对象-->
<!--   如Map id为key class为value-->
<!--    scope 默认所有对象都是单例(singleton) prototype 创建普通对象-->
<!--  子元素 property-->
<!--    三个属性 name 属性的名称 value 基本类型 ref指向容器的另外一个对象-->
    <bean id="userService" class="com.spring.service.impl.UserServiceimpl" />
    <bean id="user" class="com.spring.entity.User"
          scope="singleton"
          init-method="init"
          destroy-method="destroy"
          lazy-init="true">
        <property name="name" value="123"/>
<!--        <property name="address" ref="指向另外一个bean对象"/>-->
<!--        List 赋值-->
        <property name="list" >
            <list>
                <value>123</value>
                <value>333</value>
            </list>
        </property>
        <!--        List 赋值 引入p utis包-->
                <p:list id="list">
                    <value>123</value>
                </p:list>
<!--    Map 赋值-->
        <property name="map">
            <map>
                <entry key="1" value="hehe"/>
            </map>
        </property>

    </bean>
</beans>

注解注册:

/**
 * 
 * 先开启注解
 *<context:component-scan base-package="自动扫描指定包及其子包下的所有Bean类"/>
 * @Component 相当于使用bean (只放在类上)
 * 不设置默认为类名首字母小写
 * 作用 往容器中注册对象 再累上使用
 * -给容器中的bean指定名字 如果不能指定则类名默认首字小写
 *
 * @Service 声明在Service层
 * @Repository 声明在dao层
 * @Controller 声明在 Controller层
 */

java Config

  • 在类方法上使用@Configuration注解
  • 在类定义方法
    • 必须是public 定义方法

常用Spring的声明的注解,

注解作用域说明
@Component注解在类上,可以作用在任何层次。泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。是一个泛化的概念,仅仅表示一个组件 (Bean) ,将一个实体类,放入Spring中。
@ Service注解在类上用于标注业务层组件
@ Controller注解在类上用于标注控制层组件
@ Repository注解在类上用于标注数据访问组件,即DAO组件。

具体:

Spring容器扫描指定包路径下的所有类,每当找到1个@Component注解,就会注册Bean,同时设置Bean ID。

**注: **默认情况下Bean ID就是类名,但首字母小写。如果类名以连续几个大写字母开头,首字母不小写。(即HELLOService -> HELLOService)

设置ID :@Component(value = “value”) ,其中value 为设置的ID

<context:component-scan base-package="com.wener.example(包下所有Bean类)"/>
    自动扫描指定包及其子包下的所有Bean类
  • 注解类Component上:(可以作用在任何层次)Spring IoC 会把这个类扫描成一个 bean实例

@Component(value = “value”) 其中value表示这个类在Spring中的 id (不写默认小写开头其名)

  • Controller 用于户业务层

  • Service 服务层

  • Repository dao层

  • @Service在类上注解后 后通过 @Qualifier(“类名调用”)

    该注解可以使用字段、方法、参数、注解上

    当Spring容器中存在多个具有相同类型的 bean 时,

    并且想要用一个属性只为它们其中的一个进行装配,在这种情况下

总结:

  1. 被注解的java类当做Bean实例,Bean实例的名称默认是Bean类的首字母小写,其他部分不变。

  2. Controller 、@Repository、@Controller、 @Service可以自定义Bean名称,理论上只要符合java的命名规范的名字都可以,但是必须是唯一的,

  3. 尽量使用对应组件注解的类替换@Component注解,在spring未来的版本中,@Controller,@Service,@Repository会携带更多语义。并且便于开发和维护!

  4. 指定了某些类可作为Spring Bean类使用后,在Spring配置文件加入如下配置

    <context:component-scan base-package="自动扫描指定包及其子包下的所有Bean类"/>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值