Spring5入门-01-HelloSpring

一、前言

二、依赖

注意:这里用到的应该是spring-context,但是spring-webmvc由于继承的关系会有一张依赖网:

image-20200922215433508

算是省心省力吧。

<!--Spring-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${org.springframework.version}</version>
</dependency>

<!--JUnit-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>



三、代码

2.1 pojo

路径

image-20200922215525867

代码

package com.duzhuan.pojo;

/**
 * @Autord: HuangDekai
 * @Date: 2020/9/22 20:36
 * @Version: 1.0
 * @since: jdk11
 */
public class Hello {
    private String str;

    public String getStr() {
        return str;
    }

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

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

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

    <bean id="..." class="...">  
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <bean id="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions go here -->

</beans>
  • The id attribute is a string that identifies the individual bean definition.

  • The class attribute defines the type of the bean and uses the fully qualified classname.

路径

image-20200922224645592

代码

<?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-->
    <bean id="hello" class="com.duzhuan.pojo.Hello">
        <property name="str" value="Spring"/>
    </bean>

</beans>
  • id是bean的名字
  • class中放的要创建的对象(在这里应该说是给Spring托管的对象)的全限定名称
  • <property>中:
    • name的值应该是要创建的对象的属性的名称image-20200923080109887
    • value就不用说了,name指定的属性的值

2.3 测试样例

路径

image-20200923080310178

代码

package com.duzhuan.pojo;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @Autord: HuangDekai
 * @Date: 2020/9/22 20:41
 * @Version: 1.0
 * @since: jdk11
 */
public class HelloTest {
    @Test
    public void HelloTest(){
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Hello  hello = (Hello) context.getBean("hello");
        System.out.println(hello);
    }
}
  • ClassPathXmlApplicationContext是一种获取配置、使用容器的方法。这方面官方文档有比较多的说明,事实上,它可以一次读取多个配置:

    ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
    
  • context.getBean()输入的参数就是beanid


2.4 测试结果

image-20200923082409174

可以看到,str的值正是之前在配置文档beans.xml中写入的value的值。



四、修改上个案例

上个案例(Spring5入门-00-IoC思想)中:

4.1 路径

image-20200923084643110


4.2 不修改的代码

UserDao

package com.duzhuan.springLearn.dao;

/**
 * @Autord: HuangDekai
 * @Date: 2020/9/22 14:48
 * @Version: 1.0
 * @since: jdk11
 */
public interface UserDao {
    void getUser();
}

UserDaoImpl

package com.duzhuan.springLearn.dao;

/**
 * @Autord: HuangDekai
 * @Date: 2020/9/22 14:51
 * @Version: 1.0
 * @since: jdk11
 */
public class UserDaoImpl implements UserDao {
    @Override
    public void getUser() {
        System.out.println("Get User By: ---------------------> UserDaoImpl");
    }
}

UserDaoMySQLImpl

package com.duzhuan.springLearn.dao;

/**
 * @Autord: HuangDekai
 * @Date: 2020/9/22 15:13
 * @Version: 1.0
 * @since: jdk11
 */
public class UserDaoMySQLImpl implements UserDao {
    @Override
    public void getUser() {
        System.out.println("Get User By: ---------------------> UserDaoMySQLImpl");
    }
}

UserDaoOracleImpl

package com.duzhuan.springLearn.dao;

/**
 * @Autord: HuangDekai
 * @Date: 2020/9/22 16:12
 * @Version: 1.0
 * @since: jdk11
 */
public class UserDaoOracleImpl implements UserDao {
    @Override
    public void getUser() {
        System.out.println("Get User By: ---------------------> UserDaoOracleImpl");
    }
}

UserService

package com.duzhuan.springLearn.service;

/**
 * @Autord: HuangDekai
 * @Date: 2020/9/22 14:50
 * @Version: 1.0
 * @since: jdk11
 */
public interface UserService {
    void getUser();
}

UserServiceImpl

package com.duzhuan.springLearn.service;

import com.duzhuan.springLearn.dao.UserDao;
import com.duzhuan.springLearn.dao.UserDaoImpl;
import com.duzhuan.springLearn.dao.UserDaoMySQLImpl;

/**
 * @Autord: HuangDekai
 * @Date: 2020/9/22 14:53
 * @Version: 1.0
 * @since: jdk11
 */
public class UserServiceImpl implements UserService {

    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public void getUser() {
        userDao.getUser();
    }
}

4.3 Update

路径

image-20200923090112834

代码

添加dao.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">
    <bean id="UserDaoImpl" class="com.duzhuan.springLearn.dao.UserDaoImpl"/>
    <bean id="UserDaoMySQLImpl" class="com.duzhuan.springLearn.dao.UserDaoMySQLImpl"/>
    <bean id="UserDaoOracleImpl" class="com.duzhuan.springLearn.dao.UserDaoOracleImpl"/>
</beans>

service.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">
    
    <bean id="UserServiceImpl" class="com.duzhuan.springLearn.service.UserServiceImpl">
        <property name="userDao" ref="UserDaoOracleImpl"/>
    </bean>
    
</beans>

两个新的地方:

  • 使用了不同的xml文档。
  • 使用了ref去添加属性。

注意看的话,可以发现其实注入的是一个对象(实例)。而且是在另外一个文档注册的Bean

posted @ 2020-09-23 09:10  杜撰丶  阅读(170)  评论(0编辑  收藏  举报