3、第一个Spring文件

步骤:

1、pojo实体类

/**
 * @author zhangzhixi
 */
public class User {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

 

2、配置元数据

从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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--
        使用Spring创建对象,在Spring中这些都称为Bean
            id:标识单个bean定义的字符串
            class:完全限定的类名
            property:相当于对象中的属性
                name:属性名
                value:属性值
                ref:引用spring容器中创建好的对象
    -->
    <bean id="user" class="com.zhixi.pojo.User">
        <property name="id" value="2018"/>
        <property name="name" value="张志喜"/>
    </bean>
</beans>

3、实例化容器

public class MyTest {
    public static void main(String[] args) {
        // 获取Spring上下文对象,多个xml文件,用逗号隔开
        ApplicationContext context = new ClassPathXmlApplicationContext("bens.xml");
        // 我们的对象都在spring中进行管理,需要使用的直接去spring容器中取
        User user = (User) context.getBean("user");
        System.out.println(user.toString());

    }
}

User{id=2018, name='张志喜'}

 

===================================================================================

第一个案例中使用ioc思想进行改进代码:

 

 

 需要注意的是,要修改对象的话,必须要是在set方法中修改,所以这个service接口实现类就显得很重要了:

public class UserServiceImpl implements IUserService {

    IUserDao userDao;

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

    public void getUser() {
        //业务层调dao层
        userDao.getUser();
    }
}

bens.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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--
        使用Spring创建对象,在Spring中这些都称为Bean
            id:标识单个bean定义的字符串
            class:完全限定的类名
            property:相当于对象中的属性
                name:属性名
                value:属性值
                ref:引用spring容器中创建好的对象
    -->
    <bean id="daoImpl" class="com.zhixi.dao.UserDaoImpl"/>
    <bean id="mysqlImpl" class="com.zhixi.dao.UserDaoMysqlImpl" />
    <bean id="oracleImpl" class="com.zhixi.dao.UserDaoOracleImpl" />

    <bean id="userService" class="com.zhixi.service.UserServiceImpl">
        <!--需要哪种需求就直接在ref中添加对应的对象id,大大降低了程序的耦合度
      name中是UserServiceImpl的属性名
--> <property name="userDao" ref="mysqlImpl"></property> </bean> </beans>

测试文件

public class MyTest {
    public static void main(String[] args) {
        // 获取ApplicationContext对象:拿到Spring容器
        ApplicationContext context = new ClassPathXmlApplicationContext("bens.xml");
        // 传入在xml文件中配置好的对象id
        UserServiceImpl userService = (UserServiceImpl) context.getBean("userService");
        userService.getUser();
    }
}

获取mysql用户信息

 小结:第一个案例中user对象是由Spring创建的

user对象的属性是怎么设置的?
  user对象的属性是由Spring容器设置的,这个过程就叫控制反转:

 

  • 控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的.
  • 反转:程序本身不创建对象,而变成被动的接收对象.
  • 依赖注入:就是利用set方法来进行注入的.
  • IOC是一种编程思想,由主动的编程变成被动的接收.
  • 到了现在,我们彻底不用再程序中去改动了,要实现不同的操作,只需要在xmI配置文件中进行
    修改,所谓的IoC,一句话搞定:对象由Spring来创建,管理,装配!

 

posted @ 2021-01-01 17:57  Java小白的搬砖路  阅读(165)  评论(0编辑  收藏  举报