springboot学习笔记二

来源:互联网 发布:上海大学乐乎 编辑:程序博客网 时间:2024/05/16 15:11

Enable*与import

package da.test2;import org.springframework.boot.SpringApplication;import org.springframework.boot.context.properties.EnableConfigurationProperties;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Import;import org.springframework.scheduling.annotation.EnableAsync;/** * @EnableConfigurationProperties 开启一个特性,这个特性可以把配置文件的属性注入到bean里面,一般与@ConfigurationProperties一起用 *  * @EnableAsync 启用异步,一般与@Async一起用 *  * @Import 可以导入一个或者多个类,或者配置类 */@EnableAsync@EnableConfigurationProperties@Import(ImportTest.class)@ComponentScanpublic class Springboot01Application2 {    public static void main(String[] args) {        ConfigurableApplicationContext context = SpringApplication.run(Springboot01Application2.class, args);        System.out.println(context.getBean(User.class));        context.getBean(Runnable.class).run();        // context.getBean(AsyncTest.class).run(); 不知道为什么这样写会找不到这个类        System.out.println("------end-----");        System.out.println(context.getBean(ImportTest.class));        context.close();    }}
package da.test2;import java.util.concurrent.TimeUnit;import org.springframework.scheduling.annotation.Async;import org.springframework.stereotype.Component;@Componentpublic class AsyncTest implements Runnable {    @Async    public void run() {        try {            for (int i = 1; i <= 3; i++) {                TimeUnit.SECONDS.sleep(1);                System.out.println("=================" + i);            }        } catch (Exception e) {            e.printStackTrace();        }    }}

事件监听

package da.test3;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;/** * 1.自定义事件:一般都是继承ApplicationEvent类 *  * 2.自定义监听器:一般都是实现ApplicationListener接口 *  * 3.启动的时候要把监听器加入到spring容器中 *  * 3.还可以通过application.properties配置监听器 *  * 4.发布事件:使用ApplicationContext.publishEvent发布需求 * */@SpringBootApplicationpublic class Springboot01Application3 {    public static void main(String[] args) {        SpringApplication app = new SpringApplication(Springboot01Application3.class);        //app.addListeners(new MyApplicationListener());        ConfigurableApplicationContext context = app.run(args);        context.publishEvent(new MyApplicationEvent(new Object()));        context.close();    }}

事件类与监听类

package da.test3;import org.springframework.context.ApplicationEvent;public class MyApplicationEvent extends ApplicationEvent {    private static final long serialVersionUID = 1L;    public MyApplicationEvent(Object source) {        super(source);    }}
package da.test3;import org.springframework.context.ApplicationListener;public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> {    @Override    public void onApplicationEvent(MyApplicationEvent arg0) {        System.out.println("已经接收到事件:" + arg0.getClass());    }}

在配置文件中注册监听

#注册监听器context.listener.classes=da.test3.MyApplicationListener

其他

package da.test4;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;/** * @SpringBootApplication 中可以定义以哪个地方为基类来扫描,也可以定义不扫描哪个类或者哪个包 */@SpringBootApplicationpublic class Springboot01Application4 {    public static void main(String[] args) {        SpringApplication app = new SpringApplication(Springboot01Application4.class);//      app.setBannerMode(Banner.Mode.OFF); 关闭banner banner:不显示spring那个logo        ConfigurableApplicationContext context = app.run(args);        context.close();    }}

banner: 在src/main/resources下直接放置banner.txt或者banner.jpg/banner.png/banner.gif 启动动画会改变

在application.properties中也能指定banner的名字与位置:

banner.image.location=my.jpg
原创粉丝点击