摘要:使用注解的類相當(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接口,允許使用代碼去配置servlets、filters、listeners。
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注解的類相當(dāng)于傳統(tǒng)配置文件中的Beans,該類中的方法可以通過(guò)@Bean標(biāo)注成為Bean。
@Configuration public class SpringConfig { @Bean(name = "exampleBean") public ExampleBean getExampleBean() { return new ExampleBean(); } }
使用@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注解可以引入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
摘要:一從零開始環(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ò)誤難尋,...
摘要:前言由于寫的文章已經(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ù)連接池...
摘要:打開,,選中,然后再選中,輸入項(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ì)有一些...
摘要:目前該功能并未完善,敬請(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í)候繞半...
閱讀 854·2023-04-26 00:11
閱讀 2655·2021-11-04 16:13
閱讀 2101·2021-09-09 09:33
閱讀 1472·2021-08-20 09:35
閱讀 3817·2021-08-09 13:42
閱讀 3605·2019-08-30 15:55
閱讀 1040·2019-08-30 15:55
閱讀 2218·2019-08-30 13:55