spring與spring mvc集成多種技術(shù)構(gòu)建復雜工程

使用spring集成其他技術(shù)仙蛉,最基本的配置都是模板化的,比如配置視圖模板引擎碱蒙、數(shù)據(jù)庫連接池荠瘪、orm框架、緩存服務赛惩、郵件服務巧还、rpc調(diào)用等,以spring的xml配置為例坊秸,我將這些配置過程整理出來麸祷,并不時更新,以備參考褒搔!

spring

在普通的java工程中引入spring阶牍,只需要配置以下依賴

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>3.2.17.RELEASE</version>
</dependency>

實際開發(fā)中喷面,如果你用了log4j等日志框架,最好排除掉spring對commons-logging的依賴走孽,寫demo就不用了

<exclusions>
    <exclusion>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
    </exclusion>
</exclusions>

建一個spring-conf.xml惧辈,放在src/main/java目錄(也就是所有包和類的根目錄,即classpath)磕瓷,內(nèi)容如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean class="com.xmyself.Test" />
</beans>

建一個Test.java類盒齿,這個類就是spring-conf.xml文件中定義的那個bean

package com.xmyself;
public class Test {
    public void test() {
        System.out.println("spring is running");
    }
}

寫帶有main方法的主類

package com.xmyself;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
    public static void main(String[] args) {
        @SuppressWarnings("resource")
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-conf.xml");
        Test test = context.getBean(Test.class);
        test.test();
    }
}

運行Main,就能看到“spring is running”輸出困食,spring配置完成

spring mvc

spring mvc是配置在web工程中的边翁,使用spring mvc也只要配置一個依賴

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.2.17.RELEASE</version>
</dependency>

整一個Test.java類,這是個controller

package com.xmyself.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class Test {
    @RequestMapping("/test")
    @ResponseBody
    public String test() {
        return "spring mvc running";
    }
}

在src/main/resources目錄下建一個spring目錄硕盹,里面放一個mvc-init.xml符匾,內(nèi)容如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.xmyself.controller" />
</beans>

這個配置文件掃描了Test.java,最后修改web.xml來加載這個配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
    <display-name>spring3mvc</display-name>

    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:/spring/mvc-init.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

初始化DispatcherServlet如果沒有指定xml文件地址瘩例,spring默認去WEB-INF目錄找[servlet-name]-servlet.xml啊胶,這里就是spring-servlet.xml

啟動工程,瀏覽器訪問 http:localhost:8080/springmvc/test 就能看到返回 test 值了垛贤,spring mvc配置完成
freemarker模板引擎

spring mvc通常要配置模板引擎焰坪,因為jsp太復雜了,而且有損mvc模型
freemarker是一種嚴格遵循mvc模型的模板引擎聘惦,現(xiàn)在介紹它的spring mvc中的配置

首先配置依賴

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>3.2.17.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.23</version>
</dependency>

為什么要依賴spring-context-support某饰?因為freemarker使用的視圖解析器是由spring提供的,這個解析器就在spring-context-support的jar中部凑,下面的配置過程會讓你明白露乏,在spring mvc的mvc-init.xml中配置freemarker

<!-- freemarker config -->
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/page/" />
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="suffix" value=".ftl" />
    <property name="contentType" value="text/html; charset=UTF-8" />
</bean>

配置freemarker的本質(zhì)是初始化上面的兩個bean,所以涂邀,你可以把這段配置寫在任意的xml文件瘟仿,只要spring mvc能加載就行

在WEB-INF目錄建一個page目錄,里面放一個freemarker.ftl文件比勉,內(nèi)容只有一句話“freemarker page 中文亂碼測試”

最后劳较,在控制器寫一個方法

@RequestMapping("/freemarker")
public String freemarker() {
    return "freemarker";
}

啟動工程,訪問 http://localhost:8080/springmvc/freemarker 就能看到『freemarker page 中文亂碼測試』這句話了

thymeleaf模板引擎

thymeleaf也是一個mvc模型的模板引擎浩聋,它的后綴是.html观蜗,所以thymeleaf模板的好處是不用渲染就能看到內(nèi)容,現(xiàn)在spring也是推薦用thymeleaf作為spring mvc的模板引擎

配置依賴

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring3</artifactId>
    <version>2.1.5.RELEASE</version>
</dependency>

這是thymeleaf與spring連接用的jar衣洁,它依賴了thymeleaf的jar墓捻,對于spring3和spring4,thymeleaf的依賴是不同的坊夫,配置也稍有不同,這點要注意,下面就開始配置thymeleaf

<!-- thymeleaf config -->
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    <property name="prefix" value="/WEB-INF/page/" />
    <property name="suffix" value=".html" />
    <property name="templateMode" value="HTML5" />
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
    <property name="templateResolver" ref="templateResolver" />
</bean>
<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine" />
    <property name="characterEncoding" value="UTF-8" />
</bean>

這段配置放在spring mvc能讀到的任意xml文件都可以

在WEB-INF目錄建一個page目錄西壮,里面放一個thymeleaf.html,內(nèi)容只有一行“thymeleaf page 中文亂碼測試”

最后十饥,在控制器寫一個方法

@RequestMapping("/thymeleaf")
public String thymeleaf() {
    return "thymeleaf";
}

啟動工程,訪問 http://localhost:8080/springmvc/thymeleaf就能看到“thymeleafpage 中文亂碼測試”這句話了

tomcat pool數(shù)據(jù)庫連接池

可能用dbcp、c3p0連接池的人多一點,其實tomcat pool更好渡紫,具體怎么好請google,下面介紹針對mysql數(shù)據(jù)庫的配置過程

配置依賴

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.27</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jdbc</artifactId>
    <version>7.0.73</version>
</dependency>

tomcat-jdbc依賴了tomcat-juli考赛,所以如果你在eclipse中為工程加入了tomcat的庫惕澎,還需要單獨加一個tomcat-juli的jar

下面整一個Main.java來測試連接

package com.xmyself;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;

public class Main {
    public static void main(String[] args) throws Exception {
        PoolProperties p = new PoolProperties();
        p.setUrl("jdbc:mysql://localhost:3306/mysql");
        p.setDriverClassName("com.mysql.jdbc.Driver");
        p.setUsername("root");
        p.setPassword("root");
        p.setJmxEnabled(true);
        p.setTestWhileIdle(false);
        p.setTestOnBorrow(true);
        p.setValidationQuery("SELECT 1");
        p.setTestOnReturn(false);
        p.setValidationInterval(30000);
        p.setTimeBetweenEvictionRunsMillis(30000);
        p.setMaxActive(100);
        p.setInitialSize(10);
        p.setMaxWait(10000);
        p.setRemoveAbandonedTimeout(60);
        p.setMinEvictableIdleTimeMillis(30000);
        p.setMinIdle(10);
        p.setLogAbandoned(true);
        p.setRemoveAbandoned(true);
        p.setJdbcInterceptors("org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;"
                + "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");
        DataSource datasource = new DataSource();
        datasource.setPoolProperties(p);
        Connection con = null;
        try {
            con = datasource.getConnection();
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select * from user");
            int cnt = 1;
            while (rs.next()) {
                System.out.println((cnt++) + ". Host:" + rs.getString("Host")
                        + " User:" + rs.getString("User") + " Password:"
                        + rs.getString("Password"));
            }
            rs.close();
            st.close();
        } finally {
            if (con != null)
                try {
                    con.close();
                } catch (Exception ignore) {
                }
        }
    }
}

這個例子是tomcat官方文檔給出的,運行結(jié)果如下

1. Host:localhost User:root Password:*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
2. Host:127.0.0.1 User:root Password:*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
3. Host:::1 User:root Password:*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
4. Host:localhost User: Password:
5. Host:% User:root Password:*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B

那spring怎么集成tomcat pool呢欲虚?配置xml讓spring加載就好了

<bean id="datasource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
    <property name="url" value="jdbc:mysql://localhost:3306/mysql" />
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="username" value="root" />
    <property name="password" value="root" />
</bean>

這里配置的屬性與官方例子set方法中的屬性完全相同集灌,其余的我就不配置了
然后寫一個測試悔雹,這里以spring mvc為例复哆,寫一個controller,具體代碼與上例相同

@Controller
public class Test {
    @Autowired
    private DataSource datasource;

    @RequestMapping("/test")
    @ResponseBody
    public String test() throws Exception {
        Connection con = datasource.getConnection();
        // 拿到con就可以操作了
        return "spring mvc running";
    }
}

mybatis持久化框架

mybatis輕量級腌零,配置簡單梯找,使用方便,我們在tomcat pool基礎上來配置益涧,當然锈锤,使用tomcat pool配置只是為了得到dataSource,如果你用dbcp闲询、c3p0等連接池久免,只要修改下這個dataSource的配置就好,mybatis本身的配置不用修改

配置依賴

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.1</version>
</dependency>

我們定義一個TestDao.java接口扭弧,這就是mybatis要實現(xiàn)的東西

package com.xmyself.dao;
public interface TestDao {
    public String test();
}

src/main/resources目錄建一個mapper目錄阎姥,里面放一個TestDao.xml,內(nèi)容如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xmyself.dao.TestDao">
    <select id="test" resultType="java.lang.String">
        select "test"
    </select>
</mapper>

mybatis通過一個xml文件實現(xiàn)了TestDao.java接口鸽捻,很顯然呼巴,這個實現(xiàn)過程肯定要用到dataSource,接下來的配置就是將TestDao.java御蒲、TestDao.xml衣赶、dataSource三者關(guān)聯(lián)起來,在spring的xml配置文件(哪個配置文件沒關(guān)系厚满,只要spring能加載)添加如下內(nèi)容

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
    <property name="url" value="jdbc:mysql://localhost:3306/mysql" />
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="username" value="root" />
    <property name="password" value="root" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mapperLocations" value="classpath*:mapper/*.xml" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.xmyself.dao" />
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>

這個配置我其實有點疑惑府瞄,TestDao.xml中有對TestDao.java接口的聲明,所以應該只需要將dataSource與TestDao.xml做關(guān)聯(lián)就夠了碘箍,但實際上我沒有找到這種方式

這時候啟動工程遵馆,spring加載過程會報錯续崖,其實我是故意的,_

Caused by: java.lang.ClassNotFoundException: org.mybatis.spring.SqlSessionFactoryBean

因為spring內(nèi)部沒有直接對mybatis的支持团搞,所以需要依賴中間層jar包严望,另外,還需要spring-jdbc提供對dao的支持

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.0</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>3.2.17.RELEASE</version>
</dependency>

我們整一個類來測試吧逻恐,還是以spring mvc為例像吻,整一個controller

@Controller
public class Test {
    @Autowired
    private TestDao testDao;

    @RequestMapping("/test")
    @ResponseBody
    public String test() throws Exception {
        System.out.println(testDao.test());
        return "spring mvc running";
    }
}

瀏覽器訪問 http://localhost:8080/springmvc/test就能看到后臺輸出“test”,mybatis配置完成

redis緩存服務

redis是一種key-value非關(guān)系型數(shù)據(jù)庫复隆,特點是運行于內(nèi)存中拨匆,速度快,作為緩存服務器非常不錯

java對redis數(shù)據(jù)庫的訪問是通過jedis完成的

配置依賴

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

初始化jedis連接挽拂,假設redis服務器地址為:192.168.253.128惭每,端口:6379

<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
    <property name="maxIdle" value="100" />
    <property name="maxTotal" value="300" />
    <property name="maxWaitMillis" value="1000" />
    <property name="testOnBorrow" value="true" />
</bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
    <constructor-arg index="0" ref="jedisPoolConfig" />
    <constructor-arg index="1" value="192.168.253.128" type="java.lang.String" />
    <constructor-arg index="2" value="6379" type="int" />
</bean>

這段代碼放在哪沒關(guān)系,只要spring能加載到亏栈,注意台腥,構(gòu)造器注入一定要指明type類型然后我們整一個類來測試,以spring mvc為例绒北,整一個controller

@Controller
public class Test {
    @Autowired
    private JedisPool pool;

    @RequestMapping("/test")
    @ResponseBody
    public String test() {
        Jedis redis = pool.getResource();
        redis.set("test", "test");
        System.out.println(redis.get("test"));
        return "spring mvc running";
    }
}

瀏覽器訪問 http://localhost:8080/springmvc/test黎侈,就能看到后臺輸出“test”,jedis配置完成

dubbo分布式服務

dubbo是阿里巴巴開源的分布式rpc框架闷游,現(xiàn)在假設服務提供方正常工作峻汉,我們只配置在spring中使用dubbo服務

配置依賴,假設dubbo使用zookeeper作為注冊中心

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.5.3</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.4</version>
    <exclusions>
        <exclusion>
            <artifactId>org.apache.zookeeper</artifactId>
            <groupId>zookeeper</groupId>
        </exclusion>
        <exclusion>
            <artifactId>zookeeper</artifactId>
            <groupId>org.apache.zookeeper</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.9</version>
</dependency>

在src/main/resources的spring目錄放一個dubbo-client.xml脐往,內(nèi)容如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
                        http://www.springframework.org/schema/beans/spring-beans.xsd 
                        http://code.alibabatech.com/schema/dubbo 
                        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!-- 服務名稱 -->
    <dubbo:application name="dubbo-demo" />
    <!-- 注冊中心 -->
    <dubbo:registry protocol="zookeeper" address="172.17.210.124:2181" />
    <!-- 服務接口 -->
    <dubbo:reference id="demoService" interface="org.dubbo.demo.client.DemoService" version="0.0.1" />
</beans>
  然后讓spring加載dubbo-client.xml
<import resource="classpath*:/spring/dubbo-client.xml" />
  啟動工程休吠,DemoService接口提供的方法就可以用了,就像調(diào)用本地方法一樣
@Controller
public class Test{
    @Autowired
    private DemoService demoService;

    @RequestMapping("/test")
    @ResponseBody
    public String test() {
        return demoService.test("dubbo-demo-test");
    }
}

當然业簿,服務使用者需要拿到服務提供者聲明服務接口的jar瘤礁,在公司內(nèi)部,這通常也是一個依賴

<dependency>
    <groupId>com.xmyself</groupId>
    <artifactId>dubbo-demo-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辖源,一起剝皮案震驚了整個濱河市蔚携,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌克饶,老刑警劉巖酝蜒,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異矾湃,居然都是意外死亡亡脑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霉咨,“玉大人蛙紫,你說我怎么就攤上這事⊥窘洌” “怎么了坑傅?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長喷斋。 經(jīng)常有香客問我唁毒,道長,這世上最難降的妖魔是什么星爪? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任浆西,我火速辦了婚禮,結(jié)果婚禮上顽腾,老公的妹妹穿的比我還像新娘近零。我一直安慰自己,他們只是感情好抄肖,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布久信。 她就那樣靜靜地躺著,像睡著了一般憎瘸。 火紅的嫁衣襯著肌膚如雪入篮。 梳的紋絲不亂的頭發(fā)上陈瘦,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天幌甘,我揣著相機與錄音,去河邊找鬼痊项。 笑死锅风,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的鞍泉。 我是一名探鬼主播皱埠,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼咖驮!你這毒婦竟也來了边器?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤托修,失蹤者是張志新(化名)和其女友劉穎忘巧,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體睦刃,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡砚嘴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片际长。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡耸采,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出工育,到底是詐尸還是另有隱情虾宇,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布如绸,位于F島的核電站文留,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏竭沫。R本人自食惡果不足惜燥翅,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜕提。 院中可真熱鬧森书,春花似錦、人聲如沸谎势。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脏榆。三九已至猖毫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間须喂,已是汗流浹背吁断。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坞生,地道東北人仔役。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像是己,于是被迫代替她去往敵國和親又兵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,822評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理卒废,服務發(fā)現(xiàn)沛厨,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 這些屬性是否生效取決于對應的組件是否聲明為 Spring 應用程序上下文里的 Bean(基本是自動配置的)摔认,為一個...
    發(fā)光的魚閱讀 1,424評論 0 14
  • application的配置屬性逆皮。 這些屬性是否生效取決于對應的組件是否聲明為Spring應用程序上下文里的Bea...
    新簽名閱讀 5,372評論 1 27
  • 慕容雨薇:茶在我國有著悠久的歷史,茶的歷史隨著中國歷史的發(fā)展而不斷的發(fā)展著级野。中國是最早將茶作為飲品而飲用的國家页屠,茶...
    慕容雨薇官方閱讀 1,233評論 0 0