美文网首页springboot
SpringBoot--实战开发--配置(二)

SpringBoot--实战开发--配置(二)

作者: 无剑_君 | 来源:发表于2019-05-05 14:31 被阅读64次

    一、SpringBoot配置

    1. Maven配置
    <!-- Spring boot 父引用-->
    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <!-- Spring boot 核心web-->
        <dependencies>
              <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        <!-- 测试依赖-->
        <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
    1. resources 配置
      配置文件
      转换工具:
      https://www.toyaml.com/index.html

    1)核心配置文件
    application.properties
    application.yml

    2)SpringBoot支持两种配置方式,一种是properties文件,一种是yml

    3)配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
    Spring Boot使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。所以,我们要想把Spring Boot玩的溜,就要懂得如何开启各个功能模块的默认配置,这就需要了解Spring Boot的配置文件application.properties。

    Spring Boot使用了一个全局的配置文件application.properties,放在src/main/resources目录下或者类路径的/config下。Sping Boot的全局配置文件的作用是对一些默认配置的配置值进行修改。
    注:如果你工程没有这个application.properties,那就在src/main/java/resources目录下新建一个。
    4)配置示例
    YAML

    server:
      port: 8081
    

    application.properties

    server.port=8080
    
    1. 启动配置
    @SpringBootApplication
    public class PracticeApplication {
        public static void main(String[] args) {
            SpringApplication.run(PracticeApplication.class, args);
        }
    }
    

    分析:
    1)@SpringBootApplication是一个复合注解,包括@ComponentScan,和@SpringBootConfiguration,@EnableAutoConfiguration

    2)@SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。

    3)@EnableAutoConfiguration的作用启动自动的配置,@EnableAutoConfiguration注解的意思就是Springboot根据你添加的jar包来配置你项目的默认配置,比如根据spring-boot-starter-web ,来判断你的项目是否需要添加了webmvc和tomcat,就会自动的帮你配置web项目中所需要的默认配置。

    4)@ComponentScan,扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理。是以前的<context:component-scan>(以前使用在xml中使用的标签,用来扫描包配置的平行支持)。

    示例:
    排除数据源配置:
    @SpringBootApplication(exclude={DataSourceAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class})

    注:启动类一定要放在扫描包的父级或同级。

    二、启动测试

    注:一定要加入web依 赖


    启动运行
    日志信息
    1. 创建controller
    @RestController
    public class UserController {
    
        @GetMapping("/getListUser")
        public List<User >getUser() {
            List<User> users = new ArrayList<User>();
            User user = new User();
            user.setId(2);
            user.setPassword("123456");
            user.setUsername("光头强");
            users.add(user);
            return users;
        }
    }
    
    测试

    三、ApplicationListener监听器

    ApplicationContext事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListener接口,可以实现ApplicationContext事件处理。
    如果容器中有一个ApplicationListener Bean,每当ApplicationContext发布ApplicationEvent时,ApplicationListener Bean将自动被触发。这种事件机制都必须需要程序显示的触发。

    序号 Spring 内置事件 & 描述
    1 ContextRefreshedEvent-ApplicationContext 被初始化或刷新时,该事件被发布。这也可以在 ConfigurableApplicationContext接口中使用 refresh() 方法来发生。此处的初始化是指:所有的Bean被成功装载,后处理Bean被检测并激活,所有Singleton Bean 被预实例化,ApplicationContext容器已就绪可用
    2 ContextStartedEvent--当使用 ConfigurableApplicationContext (ApplicationContext子接口)接口中的 start() 方法启动 ApplicationContext 时,该事件被发布。你可以调查你的数据库,或者你可以在接受到这个事件后重启任何停止的应用程序。
    3 ContextStoppedEvent--当使用 ConfigurableApplicationContext 接口中的 stop() 停止 ApplicationContext 时,发布这个事件。你可以在接受到这个事件后做必要的清理的工作。
    4 ContextClosedEvent--当使用 ConfigurableApplicationContext 接口中的 close() 方法关闭 ApplicationContext 时,该事件被发布。一个已关闭的上下文到达生命周期末端;它不能被刷新或重启。
    5 RequestHandledEvent--这是一个 web-specific 事件,告诉所有 bean HTTP 请求已经被服务。只能应用于使用DispatcherServlet的Web应用。在使用Spring作为前端的MVC控制器时,当Spring处理用户请求结束后,系统会自动触发该事件。

    被初始化或刷新时,该事件被发布,显示一个双迎页。

    @Component
    public class WebStartInitListener implements ApplicationListener<ContextRefreshedEvent> {
        @Override
        public void onApplicationEvent(ContextRefreshedEvent event) {
            // 需要执行的逻辑代码,当spring容器初始化完成后就会执行该方法。
            printKeyLoadMessage();
        }
        /**
         * 获取Key加载信息
         */
        public boolean printKeyLoadMessage(){
            StringBuilder sb = new StringBuilder();
            // 读取国际化配置信息: resources/i18n/messages.properties
            sb.append("\r\n======================================================================\r\n");
            sb.append("\r\n    欢迎使用 "+ MessageUtils.getMessage("platform.name")+" "+MessageUtils.getMessage("platform.version")+"  - "+MessageUtils.getMessage("platform.copyright")+"  "+MessageUtils.getMessage("platform.website")+"\r\n");
            sb.append("\r\n======================================================================\r\n");
            System.out.println(sb.toString());
            return true;
        }
    }
    

    相关文章

      网友评论

        本文标题:SpringBoot--实战开发--配置(二)

        本文链接:https://www.haomeiwen.com/subject/beefoqtx.html