Spring框架的学习-ioc

  • Spring是一个轻量级的控制反转(ioc)和面向切面的(aop)的容器(框架)
  • ioc(inversion of control):控制反转,是一个理论,概念,思想。

描述的是:把对象的创建对象的属性赋值对象之间的关系管理

反转:把原来的开发人员管理,创建对象的权限转移给代码之外的容器实现。由容器代替开发人员管理对象,创建对象

为什么要使用ioc:目的就是减少对代码的改动,也能实现不同的功能。实现解耦合。

ioc的技术实现

DI(Dependency Injection):依赖注入,只需要在程序中提供要使用的对象名称就可以,它是ioc的技术实现。对象如何在容器中创建,赋值,查找都由容器内部实现。

Spring是使用di实现了ioc的功能,spring的底层创建对象,使用的是反射机制;Spring是一个容器,管理对象,给属性赋值,底层是反射创建对象。

di给属性赋值

set注入(简单类型)

步骤1 加入依赖

 

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.2.5.RELEASE</version>
</dependency>

set注入

<bean id="student" class="com.xiaoluyao.Student">
    <property name="name" value="肖路遥"></property>
    <property name="age" value="25"></property>
</bean>

构造注入

<bean id="student" class="com.xiaoluyao.Student">
   <constructor-arg name="name" value="肖路遥"></constructor-arg>
   <constructor-arg name="age" value="25"></constructor-arg>
</bean>
</beans>

set注入引用类型) 

<bean id="student" class="com.xiaoluyao.Student">
   <constructor-arg name="name" value="肖路遥"></constructor-arg>
   <constructor-arg name="age" value="25"></constructor-arg>
    <property name="school" ref="school"></property>
</bean>
    <bean id="school" class="com.xiaoluyao.School">
        <property name="name" value="西南大学"></property>
        <property name="address" value="重庆"></property>
    </bean>
</beans>
<bean id="student" class="com.xiaoluyao.Student" autowire="byType">
   <constructor-arg name="name" value="肖路遥"></constructor-arg>
   <constructor-arg name="age" value="25"></constructor-arg>
</bean>
    <bean id="school" class="com.xiaoluyao.School">
        <property name="name" value="西南大学"></property>
        <property name="address" value="重庆"></property>
    </bean>
</beans>

 

<bean id="student" class="com.xiaoluyao.Student" autowire="byName">
   <constructor-arg name="name" value="肖路遥"></constructor-arg>
   <constructor-arg name="age" value="25"></constructor-arg>
</bean>
    <bean id="school" class="com.xiaoluyao.School">
        <property name="name" value="西南大学"></property>
        <property name="address" value="重庆"></property>
    </bean>
</beans>

 

 注解注入

步骤一:配置applictionContext.xml文件

<context:component-scan base-package="com.xiaoluyao"></context:component-scan>

1.@Component 2.@Respotory 3.@Service 4.@Controller

这些都是创建对象,只是功能不同,用于分层

2 访问数据库 ,创建dao的实现类对象,持久层类的上面,dao对象是能访问数据库的

3创建服务的实现类对象,业务层类上面,可以有事物等功能

4控制层(处理层)上面,创建控制器对象,控制器对象,能够接受用户提交的参数,显示请求处理结果

5.@Value

6.@Autowired

7.@Resource

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值