maven jetty plugin 配置全局 jndi datasource

全局的datasource,要求把数据源配置在jetty.xml文件中,但是使用maven的插件,需要在pom.xml文件中指定jetty.xml文件在哪。同时,由于是全局的数据源,jetty会找不到数据库驱动,也需要在pom.xml文件中写上对数据库驱动的依赖。

此外,还需要配置一个webdefault.xml文件,这个文件是在web.xml文件加载之前加载的,可以把数据源的引用放在webdefault.xml文件中。同上,也需要在pom.xml文件中指定这个文件在哪。


1. 配置pom.xml文件

             <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.0.0.v20130308</version>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.13</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <scanIntervalSeconds>5</scanIntervalSeconds>
                    <jettyXml>src/test/resources/jetty.xml</jettyXml>
                    <webApp>
                        <defaultsDescriptor>src/test/resources/webdefault.xml</defaultsDescriptor>
                    </webApp>
                </configuration>
            </plugin>


2. 配置jetty.xml

    <New id="mysql" class="org.eclipse.jetty.plus.jndi.Resource">
     <Arg><Ref refid="Server"/></Arg>
     <Arg>jdbc/mysql</Arg>
     <Arg>
        <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
           <Set name="Url">jdbc:mysql://localhost:3306/uns</Set>
           <Set name="User">root</Set>
           <Set name="Password">rachel</Set>
        </New>
     </Arg>
    </New>


3. 配置webdefault.xml

如果把数据源的引用配置在webdefault.xml文件中,那么就不需要在web.xml文件中配置了。如果不在webdefault.xml文件中引用数据源,那么就需要在每一个webapp中的web.xml文件中对其进行引用!

  <resource-ref>
    <description>MySQL DataSource Reference</description>
    <res-ref-name>jdbc/mysql</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>

 

配好了!



<think>嗯,用户让我详细介绍一下Spring Boot的原理。首先,我需要回忆一下Spring Boot的核心概念和设计目标。Spring Boot主要是为了简化Spring应用的初始搭建和开发过程,所以它的原理应该围绕自动配置、起步依赖和嵌入式容器等方面展开。 自动配置是Spring Boot的关键特性之一。我记得它是通过@EnableAutoConfiguration注解和条件化配置来实现的。需要解释一下Spring Boot如何扫描类路径下的依赖,然后根据这些依赖自动配置相应的Bean。比如,当类路径下有H2数据库的依赖时,Spring Boot会自动配置内存数据库的相关设置。 然后是起步依赖(Starter Dependencies),它们通过Maven或Gradle的依赖管理,将相关的库和配置打包在一起。用户只需要引入一个起步依赖,比如spring-boot-starter-web,就能自动获得Web开发所需的全部依赖,比如Tomcat和Spring MVC。这部分需要说明起步依赖如何简化了依赖管理,减少了版本冲突的问题。 嵌入式容器也是一个重点。传统的Spring应用需要部署到外部的Tomcat或Jetty,而Spring Boot内置了这些容器,使得应用可以独立运行,不需要额外的部署步骤。需要提到Tomcat、Jetty和Undertow这些支持的容器,以及如何通过简单的main方法启动应用。 Spring Boot的入口类通常使用@SpringBootApplication注解,这个注解组合了@Configuration、@EnableAutoConfiguration和@ComponentScan。这里需要解释这三个注解的作用,以及它们如何协同工作来启动应用和扫描组件。 另外,外部化配置也是Spring Boot的重要部分,比如通过application.properties或application.yml文件来配置应用属性。Spring Boot允许在不同环境中使用不同的配置文件,比如application-dev.properties和application-prod.properties,并通过spring.profiles.active属性来激活特定的环境配置。 可能还需要提到Spring Boot Actuator,它提供了生产级的监控和管理功能,比如健康检查、指标收集等。但用户的问题主要集中在原理上,这部分可以简要带过。 在组织回答时,需要按照逻辑顺序,先介绍Spring Boot的目标,再逐一讲解各个核心原理,最后总结其优势。同时,在回答之后,按照要求列出相关问题,确保问题与主题相关,并覆盖可能的后续疑问。 现在检查是否有遗漏的部分,比如自动配置的具体机制,如条件注解@ConditionalOnClass、@ConditionalOnMissingBean等,这些需要详细说明。此外,Spring Boot的启动流程,比如SpringApplication.run()方法的作用,以及如何初始化应用上下文,可能也需要提及。 确保回答结构清晰,先总述再分点详细解释,最后给出相关问题。问题部分要围绕Spring Boot的核心概念,比如自动配置、起步依赖、嵌入式容器、入口类注解等,帮助用户进一步深入学习。</think><< Spring Boot是基于Spring框架的快速开发脚手架,其核心原理围绕"约定优于配置"理念,通过自动配置、起步依赖和嵌入式容器三大核心机制简化Spring应用的初始搭建和开发过程。 1. 自动配置(Auto-Configuration) 原理实现: - 通过@EnableAutoConfiguration注解触发 - 扫描META-INF/spring.factories文件中的配置- 使用条件注解(如@ConditionalOnClass)判断类路径是否存在特定类 - 自动创建需要的Bean并注入Spring容器 示例代码: ```java @Configuration @ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class }) @EnableConfigurationProperties(DataSourceProperties.class) public class DataSourceAutoConfiguration { @Bean @ConditionalOnMissingBean public DataSource dataSource(DataSourceProperties properties) { return properties.initializeDataSourceBuilder().build(); } } ``` 2. 起步依赖(Starter Dependencies) 原理: - 预定义的POM文件组合(如spring-boot-starter-web包含Tomcat+Spring MVC+JSON支持) - 解决依赖版本冲突问题 - 通过依赖传递自动引入相关技术栈 3. 嵌入式容器(Embedded Server) 实现方式: - 内置Tomcat/Jetty/Undertow容器 - 通过spring-boot-starter-web自动引入Tomcat - 提供独立运行的Fat JAR(通过spring-boot-maven-plugin打包) 4. 核心注解@SpringBootApplication 组合注解包含: - @SpringBootConfiguration:标记为主配置- @EnableAutoConfiguration:启用自动配置 - @ComponentScan:组件扫描 5. 外部化配置 支持多种配置源(按优先级排序): 1. 命令行参数 2. JNDI属性 3. JVM系统属性 4. 操作系统环境变量 5. application.properties/application.yml 6. @Configuration类上的@PropertySource 6. SpringApplication启动流程 主要步骤: 1. 创建SpringApplication实例 2. 加载ApplicationContextInitializer 3. 执行ApplicationRunner/CommandLineRunner 4. 刷新应用上下文 5. 启动嵌入式Web容器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值