San*_*r_M 8 java spring dependency-injection autowired spring-boot
我正处于将简单的java项目转换为spring引导变体的过程中.Spring引用参考指南http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/一般都非常有用,但是大多数设置简单配置的例子都涉及一些基于Web的应用程序.来自https://spring.io/guides/gs/spring-boot/教程的入门教程没有提供我正在寻找的答案.
我有一个类HelloSpring需要运行一个方法printHello().为了简单起见,我已经配置了以下类,放在同一个包中:
Application.class
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
HelloConfiguration.class
@Configuration
public class HelloConfiguration {
@Bean
public HelloSpring helloSpring(){
HelloSpring hs = new HelloSpring();
hs.printHello();
hs.printHelloAgain();
return hs;
}
@Autowired
public HelloSpring hs;
}
Run Code Online (Sandbox Code Playgroud)
HelloSpring.class
public class HelloSpring {
public void printHello() {
System.out.println("Hello Spring!");
}
@PostConstruct
public void printHelloAgain() {
System.out.println("Hello Spring?");
}
}
Run Code Online (Sandbox Code Playgroud)
它打印(省略弹簧记录):
Hello Spring!
Hello Spring?
Hello Spring?
Run Code Online (Sandbox Code Playgroud)
但是,我不确定执行HelloSpring类的正确方法.
在上面的示例中,使用spring boot时连接和"运行"类的官方方法是什么?
只需使用ApplicationContext该SpringApplication.run返回,然后与工作.这几乎是所需要的
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(Application.class, args);
HelloSpring bean = context.getBean(HelloSpring.class);
bean.printHello();
}
Run Code Online (Sandbox Code Playgroud)
所以你可以打开一个gui等,并使用ApplicationContext来获取你的bean等.
来自文档:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-command-line-runner
Application.class
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
HelloSpring.class
@Component
public class HelloSpring implements CommandLineRunner {
@Override
public void run(String... args) {
this.printHello();
}
public void printHello() {
System.out.println("Hello Spring!");
}
}
Run Code Online (Sandbox Code Playgroud)
您甚至可以使它成为run()方法实际打印出您的消息,但这样可以使它更接近您实现方法的意图,并希望它在应用程序启动时执行.
| 归档时间: |
|
| 查看次数: |
2872 次 |
| 最近记录: |