摘要:使用注解的類相當于傳統(tǒng)配置文件中的,該類中的方法可以通過標注成為。使用用來標明要掃描注解的包,相當于配置文件中的,會自動掃描注冊指定包中使用注解指定的。使用注解可以引入配置文件,通過注入對象可以很方便的拿到配置文件中的內(nèi)容。
本文主要記錄Spring零配置的方法,包括相關(guān)類以及注解的使用方法。
Servlet配置傳統(tǒng)的servlet都是在web.xml中配置,從Servlet 3.0開始提供了ServletContainerInitializer接口,允許使用代碼去配置servlets、filters、listeners。
Spring為我們提供了一個該接口的實現(xiàn)類SpringServletContainerInitializer,查看源代碼可以知道該類通過@HandlesTypes()注解指定了onStartup()方法的第一個參數(shù)接收WebApplicationInitializer實現(xiàn)類的集合。所以如果我們要使用這種方式配置servlet,只需要實現(xiàn)WebApplicationInitializer接口即可。
具體實現(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注解的類相當于傳統(tǒng)配置文件中的Beans,該類中的方法可以通過@Bean標注成為Bean。
@Configuration public class SpringConfig { @Bean(name = "exampleBean") public ExampleBean getExampleBean() { return new ExampleBean(); } }
使用@ComponentScan用來標明要掃描注解的包,相當于配置文件中的context:component-scan,Spring會自動掃描注冊指定包中使用注解指定的Bean。
@ComponentScan(basePackages = {"com.example.service","com.example.dao"})
使用@PropertySource注解可以引入properties配置文件,通過注入Environment對象可以很方便的拿到配置文件中的內(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/66272.html
摘要:一從零開始環(huán)境搭建對于之前的框架的使用,各種配置文件一旦出錯之后錯誤難尋,這也是為什么被推上主流的原因,的配置簡單,說分鐘能從框架的搭建到運行也不為過現(xiàn)在更是微服務(wù)當?shù)?,所以在此總結(jié)下的一些知識,新手教程是一個基于和概念的項目自動化構(gòu)建開源 SpringBoot2.x【一】從零開始環(huán)境搭建 對于之前的Spring框架的使用,各種配置文件XML、properties一旦出錯之后錯誤難尋,...
摘要:前言由于寫的文章已經(jīng)是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 前言 由于寫的文章已經(jīng)是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號:Java3y Java3y文章目錄導航 Java基礎(chǔ) 泛型就這么簡單 注解就這么簡單 Druid數(shù)據(jù)庫連接池...
摘要:打開,,選中,然后再選中,輸入項目的和,指定等配置,修改,打開項目,添加一些必要的目錄,最終項目框架目錄圖如下修改文件,指定各依賴和插件的版本等信息在標簽里面管理各依賴的版本號添加項目依賴管理依賴配置好之后,開始整合。 最近在回顧和總結(jié)一些技術(shù),想到了把之前比較火的 SSM 框架重新搭建出來,作為一個小結(jié),同時也希望本文章寫出來能對大家有一些幫助和啟發(fā),因本人水平有限,難免可能會有一些...
摘要:目前該功能并未完善,敬請期待。反正每次都會有新的東西補充上去一開始我本來想做的是可以使用微信登陸,也可以使用賬戶郵箱登陸,也可以使用短信登陸的。后來發(fā)現(xiàn)微信登陸要企業(yè)認證,做不了。 從零開發(fā)項目概述 最近這一直在復習數(shù)據(jù)結(jié)構(gòu)和算法,也就是前面發(fā)出去的排序算法八大基礎(chǔ)排序總結(jié),Java實現(xiàn)單向鏈表,棧和隊列就是這么簡單,十道簡單算法題等等... 被虐得不要不要的,即使是非常簡單有時候繞半...
閱讀 863·2023-04-26 00:11
閱讀 2660·2021-11-04 16:13
閱讀 2112·2021-09-09 09:33
閱讀 1481·2021-08-20 09:35
閱讀 3830·2021-08-09 13:42
閱讀 3613·2019-08-30 15:55
閱讀 1064·2019-08-30 15:55
閱讀 2225·2019-08-30 13:55