Spring - Quick Concepts and Example (logicbig翻译系列1)

2022/12/21 18:00
阅读数 30

本文翻译 https://www.logicbig.com/tutorials/spring-framework/spring-core/quick-start.html

  1. DI(依赖注入): 对象的实例被注入到目标对象的某个域/字段(理想情况下,该字段是个接口类型),注入是通过构造函数或者Setters方法来达到的,而不是目标对象本身来构造那些实例。因此,这种方法使应用程序对象成为POJO,可以在不同的环境中使用不同的实现。
  2. IOC容器(控制反转容器):框架代码在操作期间调用应用程序代码,并请求特定于应用程序的信息,而不是应用程序直接调用框架代码,因此控制颠倒了。IOC的一个例子是通过子类化模板模式。Spring IOC也提供了基于注解的IOC.
  3. AOP(面向方面编程):它允许通过向应用程序代码添加行为(方面)来分离横切关注点,而不是应用程序本身涉及这些关注点。这使得应用程序可以模块化,而不是将不同的关注点混合到一个地方。例如事务管理、日志记录等。
  4. Java EE的轻量级替代方案:Spring是使用POJO构建企业应用程序的轻量级解决方案。它可以在servlet容器中使用(例如Tomcat服务器),不需要应用程序服务器。

Spring Bean是什么

bean是由Spring IoC容器实例化、组装和管理的对象。这些bean是用您提供给容器的配置元数据创建的,例如,以XML定义的形式。

例子

我们将给出一个循序渐进的快速示例,并给出简洁的解释,以演示如何使用Spring Framework将接口的特定实现注入到客户应用程序中。

public interface HelloWorldService {
    void sayHi(String name);
}
public class HelloWorldServiceImpl implements HelloWorldService {

    public void sayHi(String message) {
        System.out.println(message);
    }
}
public class HelloWorldServiceClient {

    @Autowired
    private HelloWorldService helloWorld;

    public void showMessage() {
        helloWorld.sayHi("Hello world!");
    }
}

@Autowired是什么

在上面的代码中,我们在类HelloWorldServiceClient中使用了@Autowired注解。这个注解告诉Spring容器在哪里执行依赖注入。我们必须将HelloWorldServiceClient实例注册为bean才能实现这一点。我们还必须将HelloWorldServiceImpl注册为bean。接下来,我们将看到如何通过使用Java配置类上的@Configuration来做到这一点。

Spring配置和启动容器

在这个例子中,类AppRunner负责定义和连接依赖关系。换句话说,它是一个Spring特定的配置类。我们的示例演示了基于java的配置,它是基于XML的配置的替代方案。这个类还负责从主方法启动Spring容器。

@Configuration
public class AppRunner {

    @Bean
    public HelloWorldService createHelloWorldService() {
    }

    @Bean
    public HelloWorldServiceClient createClient() {
        return new HelloWorldServiceClient();
    }

    public static void main(String... strings) {
        AnnotationConfigApplicationContext context =
                                new AnnotationConfigApplicationContext(AppRunner.class);
        HelloWorldServiceClient bean = context.getBean(HelloWorldServiceClient.class);
        bean.showMessage();
    }
}

注解@Configuration和@Bean
我们使用@Configuration注解告诉容器在AppRunner中定义了bean。返回bean实例的方法使用@Bean进行注解,这是容器的另一个指令,以便容器知道应该将哪些对象注册为bean。

什么是AnnotationConfigApplicationContext?
这个类实现了ApplicationContext。容器通过读取配置元数据来获得关于实例化、配置和组装哪些对象的指令。
在我们的示例中,我们将配置java类传递给AnnotationConfigApplicationContext构造函数。这个类也实现了AnnotationConfigRegistry,因此它接受带注解的类作为输入。
实例化后,spring应用程序上下文对象表示spring容器的运行时引用。使用上下文对象,我们可以访问已注册的bean。它是只读的,但可以在需要时刷新/重新加载。

运行应用程序
运行AppRunner类将生成以下输出:

Hello world!

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部