国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Spring零配置文件項(xiàng)目搭建

atinosun / 1415人閱讀

摘要:使用注解的類相當(dāng)于傳統(tǒng)配置文件中的,該類中的方法可以通過(guò)標(biāo)注成為。使用用來(lái)標(biāo)明要掃描注解的包,相當(dāng)于配置文件中的,會(huì)自動(dòng)掃描注冊(cè)指定包中使用注解指定的。使用注解可以引入配置文件,通過(guò)注入對(duì)象可以很方便的拿到配置文件中的內(nèi)容。

本文主要記錄Spring零配置的方法,包括相關(guān)類以及注解的使用方法。

Servlet配置

傳統(tǒng)的servlet都是在web.xml中配置,從Servlet 3.0開始提供了ServletContainerInitializer接口,允許使用代碼去配置servletsfilterslisteners

Spring為我們提供了一個(gè)該接口的實(shí)現(xiàn)類SpringServletContainerInitializer,查看源代碼可以知道該類通過(guò)@HandlesTypes()注解指定了onStartup()方法的第一個(gè)參數(shù)接收WebApplicationInitializer實(shí)現(xiàn)類的集合。所以如果我們要使用這種方式配置servlet,只需要實(shí)現(xiàn)WebApplicationInitializer接口即可。

具體實(shí)現(xiàn)代碼:

public class WebInitializer implements WebApplicationInitializer {

    private static final Logger logger = LoggerFactory.getLogger(WebInitializer.class);

    @Override
    public void onStartup(javax.servlet.ServletContext servletContext) throws ServletException {
        logger.info("begin init web application.");

        //配置Spring
        AnnotationConfigWebApplicationContext springContext = new AnnotationConfigWebApplicationContext();
        springContext.register(SpringConfig.class);
        
        //添加linstener
        servletContext.addListener(new ContextLoaderListener(springContext));

        //添加servlet
        ServletRegistration.Dynamic dispatcher = servletContext.addServlet(
                "dispatcher", new DispatcherServlet(springContext));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");

        //添加filter
        LoggerFilter loggerFilter = new LoggerFilter();
        FilterRegistration.Dynamic logFilterRegistration=container.addFilter("requestResponseLogFilter", loggerFilter);
        logFilterRegistration.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.ASYNC), false, "/*");

        logger.info("init web application success.");
    }
}
Spring配置

Spring的配置主要就是配置各種Bean,主要是要了解幾種注解的使用方法。

@Configuration

使用@Configuration注解的類相當(dāng)于傳統(tǒng)配置文件中的Beans,該類中的方法可以通過(guò)@Bean標(biāo)注成為Bean。

@Configuration
public class SpringConfig {
    @Bean(name = "exampleBean")
    public ExampleBean getExampleBean() {
        return new ExampleBean();
    }
}
@ComponentScan

使用@ComponentScan用來(lái)標(biāo)明要掃描注解的包,相當(dāng)于配置文件中的context:component-scan,Spring會(huì)自動(dòng)掃描注冊(cè)指定包中使用注解指定的Bean。

@ComponentScan(basePackages = {"com.example.service","com.example.dao"})
@PropertySource

使用@PropertySource注解可以引入properties配置文件,通過(guò)注入Environment對(duì)象可以很方便的拿到配置文件中的內(nèi)容。

@Configuration
@PropertySource("classpath:config.properties")
@ComponentScan(basePackages = {"com.example.service","com.example.dao"})
public class SpringConfig {

    @Autowired
    private Environment env;

    @Bean(name = "mysqlDataSource")
    public DataSource mysqlDataSource() {
        ProxoolDataSource dataSource = new ProxoolDataSource();
        dataSource.setDriver(env.getProperty("ds.driver.classname"));
        dataSource.setDriverUrl(env.getProperty("ds.url"));
        dataSource.setUser(env.getProperty("ds.username"));
        dataSource.setPassword(env.getProperty("ds.password"));
        dataSource.setPrototypeCount(env.getProperty("proxool.prototype", Integer.class));
        dataSource.setMinimumConnectionCount(env.getProperty("proxool.minimum", Integer.class));
        dataSource.setMaximumConnectionCount(env.getProperty("proxool.maximum", Integer.class));
        dataSource.setSimultaneousBuildThrottle(env.getProperty("proxool.simultaneous", Integer.class));
        dataSource.setTestBeforeUse(true);
        dataSource.setHouseKeepingTestSql(env.getProperty("proxool.testSql"));
        return dataSource;
    }

}

config.properties文件內(nèi)容:

ds.driver.classname=com.mysql.jdbc.Driver
ds.url=jdbc:mysql://...
ds.username=...
ds.password=...
...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/66272.html

相關(guān)文章

  • Java后端

    摘要:,面向切面編程,中最主要的是用于事務(wù)方面的使用。目標(biāo)達(dá)成后還會(huì)有去構(gòu)建微服務(wù),希望大家多多支持。原文地址手把手教程優(yōu)雅的應(yīng)用四手把手實(shí)現(xiàn)后端搭建第四期 SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Spring 兩大核心之 AOP 學(xué)習(xí) | 掘金技術(shù)征文 原本地址:SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Sp...

    joyvw 評(píng)論0 收藏0
  • SpringBoot2.x【一】從開始環(huán)境搭建

    摘要:一從零開始環(huán)境搭建對(duì)于之前的框架的使用,各種配置文件一旦出錯(cuò)之后錯(cuò)誤難尋,這也是為什么被推上主流的原因,的配置簡(jiǎn)單,說(shuō)分鐘能從框架的搭建到運(yùn)行也不為過(guò)現(xiàn)在更是微服務(wù)當(dāng)?shù)溃栽诖丝偨Y(jié)下的一些知識(shí),新手教程是一個(gè)基于和概念的項(xiàng)目自動(dòng)化構(gòu)建開源 SpringBoot2.x【一】從零開始環(huán)境搭建 對(duì)于之前的Spring框架的使用,各種配置文件XML、properties一旦出錯(cuò)之后錯(cuò)誤難尋,...

    whjin 評(píng)論0 收藏0
  • Java3y文章目錄導(dǎo)航

    摘要:前言由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 前言 由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時(shí)間才會(huì)更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號(hào):Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡(jiǎn)單 注解就這么簡(jiǎn)單 Druid數(shù)據(jù)庫(kù)連接池...

    KevinYan 評(píng)論0 收藏0
  • 開始搭建SSM框架(Spring + Spring MVC + Mybatis)

    摘要:打開,,選中,然后再選中,輸入項(xiàng)目的和,指定等配置,修改,打開項(xiàng)目,添加一些必要的目錄,最終項(xiàng)目框架目錄圖如下修改文件,指定各依賴和插件的版本等信息在標(biāo)簽里面管理各依賴的版本號(hào)添加項(xiàng)目依賴管理依賴配置好之后,開始整合。 最近在回顧和總結(jié)一些技術(shù),想到了把之前比較火的 SSM 框架重新搭建出來(lái),作為一個(gè)小結(jié),同時(shí)也希望本文章寫出來(lái)能對(duì)大家有一些幫助和啟發(fā),因本人水平有限,難免可能會(huì)有一些...

    MiracleWong 評(píng)論0 收藏0
  • 【Java EE】從開始寫項(xiàng)目【總結(jié)】

    摘要:目前該功能并未完善,敬請(qǐng)期待。反正每次都會(huì)有新的東西補(bǔ)充上去一開始我本來(lái)想做的是可以使用微信登陸,也可以使用賬戶郵箱登陸,也可以使用短信登陸的。后來(lái)發(fā)現(xiàn)微信登陸要企業(yè)認(rèn)證,做不了。 從零開發(fā)項(xiàng)目概述 最近這一直在復(fù)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法,也就是前面發(fā)出去的排序算法八大基礎(chǔ)排序總結(jié),Java實(shí)現(xiàn)單向鏈表,棧和隊(duì)列就是這么簡(jiǎn)單,十道簡(jiǎn)單算法題等等... 被虐得不要不要的,即使是非常簡(jiǎn)單有時(shí)候繞半...

    imtianx 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<