Spring01-背景及控制反转(IOC)

Spring是什么:

Spring是分层的Java SE/EE应用 full-stack轻量级开源框架,以IOC(inverse of control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层Spring MVC 和持久层Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用对多的JavaEE企业应用开源框架。

Spring的优势:

免费,开源
方便解耦,简化开发
AOP编程的支持
声明式事务的支持
方便程序的测试
方便集成各种优秀框架
降低JavaEE API的使用难度
源码是经典的学习范例

IOC控制反转:

IOC(inverse of control:反转控制)是一种思想

之前:
UserDao 接口
UserDaoImpl 接口实现类
UserService 业务接口
UserServiceImpl 业务实现类
在我们之前的业务中,我们需要根据用户的需求去修改代码,增加对应的UserServiceImpl中的代码。在代码量十分庞大的情况下,修改的成本非常昂贵

我们在UserServiceImpl中使用set方法改变这种情况:

private UserDao userDao;

//利用set进行动态实现值的注入
public void setUserDao(UserDao userDao){
    this.userDao = userDao;
}

public void getUser(){
    UserDao.getUser();
}

之前,程序主动创建对象,控制权在程序员手上
使用set方法来实现值的注入后,程序不再具有主动性,而是变成的被动的接受对象

这种思想从本质上解决了问题,程序员不再需要去管理对象的创建了,系统的耦合性大大降低。这就是IOC的原型。

参见:https://www.cnblogs.com/hellokuangshen/p/11249253.html

HelloSpring:

创建java实体类:

package com.it.pojo;

public class Hello {
    private String str;

    @Override
    public String toString() {
        return "Hello{" +
                "str='" + str + '\'' +
                '}';
    }

    public void setStr(String str) {
        this.str = str;
    }

    public String getStr() {
        return str;
    }
}

创建beans.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 使用Spring来创建对象,在Spring中这些都称为bean -->
    <bean id="hello" class="com.it.pojo.Hello">
        <property name="str" value="Spring"/>
    </bean>
</beans>

测试

import com.it.pojo.Hello;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
    public static void main(String[] args) {
        //获取Spring的上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        //对象都在Spring中管理,使用只需直接调用
        Hello hello = (Hello) context.getBean("hello");
        System.out.println(hello.toString());
    }
}

IOC创建对象方式:

下标赋值:

<bean id"user" class="com.it.pojo.User">
    <constructor-arg index="0" value="Java"/>
</bean>  

通过类型创建(不建议使用):

<bean id"user" class="com.it.pojo.User">
    <constructor-arg type="java.lang.String" value="Java"/>
</bean>    

直接通过参数名设置:

<bean id"user" class="com.it.pojo.User">
    <constructor-arg name="name" value="Java"/>
</bean>    

在配置文件加载的时候,容器中被管理的对象就已经被初始化了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值