如何在 Spring Boot 的 main 方法中创建存储库实例?
How to create a repository instance in main method of Spring Boot?
我需要设置 SSL 属性以在 Spring 启动应用程序的主要方法中启用 HTTPS。我的代码如下所示:
import com.our.Task.configuration.FileStorageProperties;
import com.our.Task.entities.ApplicationHttpsSettingsEntity;
import com.our.Task.repository.ApplicationHttpsSettingsEntityRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ConfigurableApplicationContext;
import java.util.Properties;
@SpringBootApplication
@EnableConfigurationProperties({FileStorageProperties.class})
public class OurTaskApplication
{
@Autowired
static ApplicationHttpsSettingsEntityRepository applicationHttpsSettingsEntityRepository;
public static void main(String[] args)
{
ApplicationHttpsSettingsEntity applicationsHttpsSettingsEntity = applicationHttpsSettingsEntityRepository.getById(44);
SpringApplication application = new SpringApplication(OurTaskApplication.class);
Properties properties = new Properties();
if (applicationsHttpsSettingsEntity.getUseHttps() > 0)
{
properties.put("server.ssl.key-store", applicationsHttpsSettingsEntity.getKeyStore());
properties.put("server.ssl.key-store-password", applicationsHttpsSettingsEntity.getKeyStorePassword());
properties.put("server.ssl.key-store-type", applicationsHttpsSettingsEntity.getKeyStoreType());
properties.put("server.ssl.key-alias", applicationsHttpsSettingsEntity.getKeyAlias());
}
// SpringApplication.run(OurTaskApplication.class, args);
application.setDefaultProperties(properties);
ConfigurableApplicationContext ctx = application.run(args);
}
}
它警告我不允许在静态方法上使用@Autowired。执行时它给出空异常。
我读过这个
但它没有提供任何有关如何执行此操作的信息。我不想使用属性文件。
我不会在 main
方法中做这样的事情。让 Spring 运行 然后添加您的配置。
我会创建一个 runner
class,它会在设置 Spring 上下文后执行我需要的任何操作。
示例:
@Component
@AllArgsConstructor
public class StartRunner implements ApplicationRunner {
/* Add whatever Bean you need here and autowire them through the constructor or with @Autowired */
@Override
public void run(ApplicationArguments args) throws Exception {
// Do whatever you need here inside
}
}
我需要设置 SSL 属性以在 Spring 启动应用程序的主要方法中启用 HTTPS。我的代码如下所示:
import com.our.Task.configuration.FileStorageProperties;
import com.our.Task.entities.ApplicationHttpsSettingsEntity;
import com.our.Task.repository.ApplicationHttpsSettingsEntityRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ConfigurableApplicationContext;
import java.util.Properties;
@SpringBootApplication
@EnableConfigurationProperties({FileStorageProperties.class})
public class OurTaskApplication
{
@Autowired
static ApplicationHttpsSettingsEntityRepository applicationHttpsSettingsEntityRepository;
public static void main(String[] args)
{
ApplicationHttpsSettingsEntity applicationsHttpsSettingsEntity = applicationHttpsSettingsEntityRepository.getById(44);
SpringApplication application = new SpringApplication(OurTaskApplication.class);
Properties properties = new Properties();
if (applicationsHttpsSettingsEntity.getUseHttps() > 0)
{
properties.put("server.ssl.key-store", applicationsHttpsSettingsEntity.getKeyStore());
properties.put("server.ssl.key-store-password", applicationsHttpsSettingsEntity.getKeyStorePassword());
properties.put("server.ssl.key-store-type", applicationsHttpsSettingsEntity.getKeyStoreType());
properties.put("server.ssl.key-alias", applicationsHttpsSettingsEntity.getKeyAlias());
}
// SpringApplication.run(OurTaskApplication.class, args);
application.setDefaultProperties(properties);
ConfigurableApplicationContext ctx = application.run(args);
}
}
它警告我不允许在静态方法上使用@Autowired。执行时它给出空异常。
我读过这个
但它没有提供任何有关如何执行此操作的信息。我不想使用属性文件。
我不会在 main
方法中做这样的事情。让 Spring 运行 然后添加您的配置。
我会创建一个 runner
class,它会在设置 Spring 上下文后执行我需要的任何操作。
示例:
@Component
@AllArgsConstructor
public class StartRunner implements ApplicationRunner {
/* Add whatever Bean you need here and autowire them through the constructor or with @Autowired */
@Override
public void run(ApplicationArguments args) throws Exception {
// Do whatever you need here inside
}
}