0
点赞
收藏
分享

微信扫一扫

linuxARM裸机学习笔记(4)----GPIO中断以及定时器中断实验

悬灸人雪洋 2023-08-06 阅读 68

目录

一、创建Spring项目

1、创建Maven项目

 2、配置maven国内源

 3、引入spring依赖

4、添加启动类

二、将Bean对象存储到Spring(IoC容器)

1、创建Bean对象

2、将Bean存储到spring(容器)中

3、获取Bean对象

3.1、ApplicationContext与BeanFactory的区别

3.2、getBean方法的更多用法(参数不同,用法不同) 

 4、总结


一、创建Spring项目

1、创建Maven项目

因为Spring项目是基于Maven的。这里小编使用的idea是社区版2021.3.2,使用的JDK是1.8。

 

 2、配置maven国内源

1️⃣配置当前项目的maven国内源

 

 找到setting.xml文件之后,添加maven国内阿里源

 如果你的电脑上已经存在settings.xml文件,你只需要将这个mirror添加到settings.xml文件中的mirrors标签中即可。

<mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>        
</mirror>

2️⃣配置新项目的maven国内源

因为上述中已经在setting.mxl中添加了mirror,所以这里就直接勾选就可以,不用再配置settings.xml文件,通过这种方式配置了maven之后,之后创建了新的maven之后,就需要再配置了。

 


 3、引入spring依赖

在项目的pom.xml中添加Spring框架的支持,添加spring-context(spring上下文)和spring-beans(管理对象模块)。

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

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
    </dependencies>

添加完成之后,出现了爆红,表示这些文件没有下载,点击左边的Maven之后,点击刷新。或者也可以直接点击刷新,在第一次添加依赖时,idea的左上角会出现一个小标签,点击刷新即可触发下载。

 

 


4、添加启动类

最后在创建好的Java文件下创建一个启动类,包含main方法即可。

public class App {
     public static void main(String[] args) {
 
     }
}

二、将Bean对象存储到Spring(IoC容器)

1、创建Bean对象

比如我们创建一个UserService类,然后注入到spring中。这里所谓的Bean就是Java语言中的一个普通的类,一点点区别就是可能会被多次使用的对象叫做Bean

package com.zf.demo;

public class UserService {
    public void func(){
        System.out.println("hello UserService.");
    }
}

2、将Bean存储到spring(容器)中

这里首先需要在resource中创建一个spring-config.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"
       xmlns:content="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
   
</beans>

然后Bean对象通过spring-config配置文件,注入到spring中,就是在配置文件中加入下面的一行代码。

<bean id="user" class="com.zf.demo.UserService"></bean>

这里id表示存储到容器中bean对象的名称,class表示的bean对象的路径(包名+类名)。这里只是进行了申明并没有真正的注入到spring中,只有使用到这个对象中的方法时,才会真正的被注入到spring中。


3、获取Bean对象

获取并使用Bean对象,首先我们需要得到spring上下文对象,因为对象都交给了spring管理,所以获取对象要从spring中获取,然后通过spring上下文,获取某个指定的Bean对象,然后使用

1️⃣使用ApplicationContext接口来获取spring上下文对象

这里需要使用ApplicationContext接口的实现类ClassPathXmlApplicationContext,并且需要指定配置文件,也就是我们刚刚创建的spring-config.xml文件。

import com.zf.demo.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {
        //1、先得到Spring上下文对象(得到容器对象)
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        //2、得到Bean,这里使用依赖查找的方法
        UserService userService = (UserService) context.getBean("user");
        //3、使用Bean对象(非必须)
        userService.func();

    }
}

这里使用getBean方法进行依赖查找,这里方法中使用的参数需要和我们在spring-config.xml文件中id属性值相同。

2️⃣使用BeanFactory接口来获取上下文对象。

import com.zf.demo.Student;
import com.zf.demo.UserService;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class App2 {
    public static void main(String[] args) {
        //1、得到Spring 上下文对象(得到容器对象)
        BeanFactory context = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
        //2、获取Bean
         UserService userService = (UserService) context.getBean("user");
         //3、使用Bean
        userService.func();
    }
}

这个方式在实际中并不推荐使用,这个方式随着时代的发展已经过时了,之前由于电脑内存较小的情况下,需要考虑内存占用的问题,而现在并不需要考虑这些。

3.1、ApplicationContext与BeanFactory的区别

🍂相同点

  • 都是容器管理对象,都可以获取Bean对象。

🍂不同点

  • ApplicationContext属于BeanFactory的子类,BeanFactory提供了基础的访问容器的能力,而ApplicationContext不仅继承了BeanFactory的所有功能之外,它还拥有独有的特性,添加了对国际化的支持,资源访问支持,以及时间传播等方面的支持。
  • 他们的加载机制不同:BeanFactory是按需加载Bean,属于懒加载,使用它程序启动的时候非常快,但是需要获取Bean对象时就会慢一些;而ApplicationContext在启动的时候,会将所有的Bean对象加载完成,所以启动会较慢,但是获取对象的时候就非常快的。

✨ 这里我们通过两个Bean对象来了解他们启动时的加载机制。

1️⃣在创建一个student类,并且给两个类中都写一个构造方法其中写一个打印的方法,可以观察启动时对象有没有加载。

package com.zf.demo;

public class UserService {
    public UserService(){
        System.out.println("hello UserService Init.");
    }
    public void func(){
        System.out.println("hello UserService.");
    }
}
package com.zf.demo;

public class Student {
    public Student(){
        System.out.println("Student Init.");
    }
}

2️⃣然后将新创建的类,注入到spring中,也就是在spring-config.xml文件中配置bean.

3️⃣然后启动App类(使用ApplicationContext来获取上下问对象),App2类(使用BeanFactory来获取上下问对象)

 


3.2、getBean方法的更多用法(参数不同,用法不同) 

1️⃣用法1:根据对象的名称来获取Bean对象

UserService userService = (UserService) context.getBean("User");

2️⃣用法2:根据类型获取Bean对象

  UserService userService = context.getBean(UserService.class);

 使用这种方式获取Bean对象,当Beans中只有一个类的实例是没有问题的,但是当有这个类的多个实例,就会产生问题。

通过上述方式来获取Bean对象 ,这里就报NoUniqueBeanDefinitionException异常,表示注入的对象不是唯一的。

3️⃣方式3:根据名称和类型来获取Bean对象

UserService userService = context.getBean("user",UserService.class);

这种获取Bean对象的方式,相比于第一种更加优雅,不需要使用强制类型转换。相比于第二种也不会出现方式2中的问题。

 4、总结

1️⃣首先是创建spring项目

2️⃣存对象

3️⃣取对象

img

 

 

举报

相关推荐

0 条评论