Spring-(七)Java实现完全替代xml配置文件

本文最后更新于:January 29, 2022 pm

Spring 是目前主流的 Java Web 开发框架,是 Java 世界最为成功的框架。Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。该框架是一个轻量级的开源框架,具有很高的凝聚力和吸引力。Spring 框架不局限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。Spring 框架还是一个超级粘合平台,除了自己提供功能外,还提供粘合其他技术和框架的能力。

目录

使用Java配置类来完全代替Spring的配置文件。

Java配置类

@Configuration

使用注解@Configuration,表示这是一个配置类,他相当于是xml配置文件。表示这个类会被注册到Spring容器中,因为这个注解本来就是一个@Component(点进去可以看见)。

例如:

1
2
3
4
5
6
7
8
package com.tothefor;

import org.springframework.context.annotation.Configuration;

@Configuration
public class javaConfig {
}

@Bean

使用注解@Bean表示一个bean,同xml配置文件中的一样。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.tothefor;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class javaConfig {
@Bean //就和xml配置文件中的bean一样
public User getUser(){
return new User();
}
}

其中,

  • 方法名:等同于xml配置文件中的bean标签的id属性。
  • 返回值:等同于xml配置文件中的bean标签的class属性。

测试类

与使用xml配置文件中的测试不一样,这里是使用的AnnotationConfigApplicationContext。

1
2
3
4
5
6
7
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(javaConfig.class);
User ur = (User) context.getBean("getUser"); //方法名
System.out.println(ur.getName());
}
//输出
null

getBean中的值是java配置类中的方法名。如果写了一个在java配置类中没有的方法名则会报错。

而之所以输出null,是因为我们还没有注入属性。这里我们在User类中进行注入,:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.tothefor;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class User {
public String name;

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

public String getName() {
return name;
}

@Value("loong") //属性注入
public void setName(String name) {
this.name = name;
}
}

这样再运行测试类即可输出结果。其中的注解@Component表示这个类被注册到了Spring的容器中,Spring接管了。

@ComponentScan

扫描包。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.tothefor;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.tothefor")
public class javaConfig {
@Bean
public User getUser(){
return new User();
}
}

@Import

等同于xml配置文件中的:一个配置文件中引入其他配置文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.tothefor;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@ComponentScan("com.tothefor")
@Import(javaConfig2.class)
public class javaConfig {
@Bean
public User getUser(){
return new User();
}
}

这种纯Java方式实现的配置,在SpringBoot比较常见。


本文作者: 墨水记忆
本文链接: https://tothefor.com/DragonOne/1c2c77d7.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!