在Spring Boot框架中,要創建一個非Web應用程序(純Java程序),有兩種方式。
方式一:直接在main方法中,根據SpringApplication.run()方法獲取返回的Spring容器對象,再獲取業務bean進行調用
項目名稱:025-springboot-java-01
1.創建一個SpringBoot Module
2.創建一個演示UserService接口及實現類
UserService.java接口
package com.abc.springboot.service;
/**
* ClassName:UserService
* Package:com.abc.springboot.service
* Description:<br/>
*/
public interface UserService {
String sayHello();
}
UserServiceImpl.java接口實現類
package com.abc.springboot.service.impl;
import com.abc.springboot.service.UserService;
import org.springframework.stereotype.Service;
/**
* ClassName:UserServiceImpl
* Package:com.abc.springboot.service.impl
* Description:<br/>
*/
@Service
public class UserServiceImpl implements UserService {
@Override
public String sayHello() {
return "Hello,SpringBoot Java!";
}
}
3.在Application類的main方法中,獲取容器,調用業務bean
package com.abc.springboot;
import com.abc.springboot.service.UserService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
/**
* SpringBoot程序啟動后,返回值是ConfigurableApplicationContext,它也是一個Spring容器對象
* 它其它相當于原來Spring中啟動容器ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("");
*/
//獲取SpringBoot程序啟動后的Spring容器
ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
//從Spring容器中獲取指定bean的對象
UserService userService = (UserService) context.getBean("userServiceImpl");
//調用業務bean的方法
String sayHello = userService.sayHello();
System.out.println(sayHello);
}
}
方式二:Spring boot 的入口類實現CommandLineRunner接口
項目名稱:026-springboot-java-02
創建一個UserService接口及接口實現類
UserService.java接口類
package com.abc.springboot.service;
/**
* ClassName:UserService
* Package:com.abc.springboot.service
* Description:
*/
public interface UserService {
String sayHello();
}
UserServiceImpl.java
package com.abc.springboot.service.impl;
import com.abc.springboot.service.UserService;
import org.springframework.stereotype.Service;
/**
* ClassName:UserServiceImpl
* Package:com.abc.springboot.service.impl
* Description:
*/
@Service
public class UserServiceImpl implements UserService {
@Override
public String sayHello() {
return "Hello,SpringBoot Java!";
}
}
將Application類的@SpringBootApplication注解注釋掉,復制一個新的Application取名為Application2,實現CommandLineRunner接口
package com.abc.springboot;
import com.abc.springboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application2 implements CommandLineRunner {
//第二步:通過容器獲取bean,并注入給userService
@Autowired
private UserService userService;
public static void main(String[] args) {
//第一步:SpringBoot的啟動程序,會初始化spring容器
SpringApplication.run(Application2.class,args);
}
//覆蓋接口中的run方法
@Override
public void run(String... args) throws Exception {
//第三步:容器啟動后調用run方法,在該方法中調用業務方法
String sayHello = userService.sayHello();
System.out.println(sayHello);
}
}
小Tip
1.關閉SpringBoot Logo圖標及啟動日志
項目名稱:027-springboot-logo-01
package com.abc.springboot;
import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(Application.class);
//關閉啟動logo和啟動日志的輸出
springApplication.setBannerMode(Banner.Mode.OFF);
springApplication.run(args);
}
}
修改完畢后,運行程序查看效果
2.修改啟動的logo圖標
項目名稱:028-springboot-logo-02
修改前LOGO
在src/main/resources放入banner.txt文件,該文件名字不能隨意,文件中的內容就是要輸出的logo;
可以利用網站生成圖標:http://patorjk.com/software/taag/,將生成好的圖標文字粘貼到banner.txt文件中,然后將關閉logo輸出的語句注釋,啟動看效果。
修改后LOGO