【发布时间】:2019-10-07 08:45:22
【问题描述】:
我想在 java 程序中使用 Spring 进行 DI。我有一些我想注入的配置类和客户端类等类,但我不想创建 Tomcat 服务器,我希望能够像通常那样在主函数中编写我的程序。
我尝试使用应用程序上下文但没有成功(您可以猜到)。
这里有两个类的代码来重现:
package com.alltests;
import com.socionodes.alltests.Config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.stereotype.Component;
@SpringBootApplication
@Component
public class App
{
@Autowired
public static Config config;
public static void main( String[] args )
{
ApplicationContext context = new AnnotationConfigApplicationContext();
System.out.println("conf obj is : ");
System.out.println(config);
}
package com.alltests.configs;
import org.springframework.stereotype.Configuration;
@Configuration("config")
public class Config{
private String user;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
和 pom.xml :
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.alltests</groupId>
<artifactId>test-spring-di</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>test-spring-di</name>
<url>http://maven.apache.org</url>
<properties>
<java.version>1.8</java.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.alltests.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
properties.yml:
config:
user: me
目标是自动在 config 中拥有 Config 对象。这可能吗?
【问题讨论】:
-
"我不想创建 Tomcat 服务器" 那你为什么要包含 spring-boot-starter-web?
-
您不需要 Spring Boot Server,对于 DI,您可以使用 Spring Core 功能,包括 Spring Core、Context、Spring Beans。
-
@Michael 你是对的,我只是坚持我所知道的,但这很愚蠢,ty。
-
@Sambit ty,我研究了一下,但我仍然很乐意举一个例子来说明如何使用这些依赖项创建应用程序上下文。
-
全部解决,谢谢!