spring Ioc简单实践

Posted 过去的我

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring Ioc简单实践相关的知识,希望对你有一定的参考价值。

0. Ioc

https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-introduction

主要是实现一个控制反转,耦合性大大降低。

1. 建maven项目

建立一个空的maven项目,然后pom.xml添加spring-context的依赖:

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.7.RELEASE</version>
        </dependency>

2. 创建pojo java对象

package com.aca;

public class Hello {
    private String str;


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

    public String getStr() {
        return str;
    }

    public Hello(String str){
        this.str = str;
    }


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

3. 创建bean xml配置元数据

配置文件放在resources下。
这里以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">

    <bean id="Hello" class="com.aca.Hello">
        <constructor-arg type="java.lang.String" value="fffff"/>
    </bean>

</beans>

如果有多个resource或者目录不一致,就需要import一下:

<beans>
    <import resource="services.xml"/>
    <import resource="resources/messageSource.xml"/>
    <import resource="/resources/themeSource.xml"/>

    <bean id="bean1" class="..."/>
    <bean id="bean2" class="..."/>
</beans>

里面可以调用构造函数来初始化一下bean。

4.创建spring 上下文

这里用ClassPathXmlApplicationContext 方法。

     ApplicationContext context = new ClassPathXmlApplicationContext("hbean.xml");

// retrieve configured instance
        Hello hello = context.getBean("Hello", Hello.class);
//        hello.setStr("abc");
        System.out.println(hello);

直接可以用这个bean,由xml注入。

5. Error:java: 错误: 不支持发行版本 5

maven的pom.xml中指定java版本

   <properties>
        <maven.compiler.target>14</maven.compiler.target>
        <maven.compiler.source>14</maven.compiler.source>
    </properties>

将file- project structure 中的jdk版本选成跟本地一直,比如我这个jdk14

将build -> java complier中的两个版本选择成跟本地一致,这里是14

6. 如果报xml的问题

xml declaration should precede all document

那是因为xml 第一行是空格了,必须<?xml 做为第一行。

以上是关于spring Ioc简单实践的主要内容,如果未能解决你的问题,请参考以下文章

Spring 容器IOC解析及简单实现

Spring IOC容器解析及实现原理

spring中IOC的简单使用

[死磕 Spring 17/43] --- IOC 之从单例缓存中获取单例 bean

Spring IoC 简单案例

Spring IoC 简单案例