11.1 接口内涵
可见CommandLineRunnner 里只有一个run 方法。这个接口的作用是:在对象创建之后留一小块时间进行的预处理。
11.2 接口应用
首先创建一个 新模块:_011_springboot_CommandLineRunner,并打开Application 类:
我知道这个run 方法的返回值是 ConfigurationApplicationContext ,是首先容器的接口,因此run 方法是在创建容器。
下面比如说我要在创建容器之后立即做一些预处理,可以让Application 类实现 CommandLineRunner 接口,将光标放在接口上,按住 alt +enter 点击实现接口方法:
package com.zhanglei;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application implements CommandLineRunner {
public static void main(String[] args) {
//创建容器
SpringApplication.run(Application.class, args);
System.out.println("预处理之后");
}
@Override
public void run(String... args) throws Exception {
System.out.println("这是创建对象后做的预处理");
}
}
运行 Application :
11.3 接口应用扩展
springboot 在创建容器后,我就可以将一些bean 实例自动注入到容器中,这样就可以直接对 bean 实例进行应用。
11.3.1 bean 实例创建
首先在 com.zhanglei 目录下创建一个新的service包,在service包下创建一个UserService 接口:
在 接口中写一个方法:
package com.zhanglei.service;
public interface UserService {
void sayHello(String str);
}
将鼠标放在 UserService 上,按 alt+enter ,点击实现接口:
将实现类放在 service 包下的 impl 包下:
重写方法,并在实现类上加注解 @Service,表明创建这个类的对象 :
package com.zhanglei.service.impl;
import com.zhanglei.service.UserService;
@Service("userServiceImpl")//表明 bean id ="userServiceImpl",默认类的首字母小写
public class UserServiceImpl implements UserService {
@Override
public void sayHello(String str) {
System.out.println(str+"你好");
}
}
11.3.2 实现预处理
springboot 在创建容器后,我就可以将一些bean 实例自动注入到容器中,这样就可以对 bean 实例直接进行应用。
package com.zhanglei;
import com.zhanglei.service.UserService;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.annotation.Resource;
@SpringBootApplication
public class Application implements CommandLineRunner {
//注入对象
@Resource
private UserService userService;
public static void main(String[] args) {
//创建容器
SpringApplication.run(Application.class, args);
System.out.println("预处理之后");
}
@Override
public void run(String... args) throws Exception {
userService.sayHello("张磊");
System.out.println("这是创建对象后做的预处理");
}
}
运行 Application: