使用Spring MVC4 如何配置注解?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
點軍網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),點軍網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為點軍上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的點軍做網(wǎng)站的公司定做!
在傳統(tǒng)的Spring項目中,我們要寫一堆的XML文件。而這些XML文件格式要求又很嚴(yán)格,很不便于開發(fā)。而網(wǎng)上所謂的0配置,并不是純粹的0配置,還是要寫一些xml配置,只是用了幾個@Service,@Controller注解而已。
在這里,我講介紹一種新的配置方式,一行XML代碼都不需要,什么web.xml,Application-context.xml,Beans.xml,統(tǒng)統(tǒng)去死吧!
首先建立一個Maven項目,Packageing方式為war,項目結(jié)構(gòu)為標(biāo)準(zhǔn)Maven WebApp結(jié)構(gòu)。
pom文件如下(很多依賴都沒用,懶得去掉了):
4.0.0 com.csonezp springdemo war 1.0-SNAPSHOT dataplatform Maven Webapp http://maven.apache.org 4.0.1.RELEASE junit junit 4.11 asm asm-commons 2.2.3 asm asm 2.2.3 org.springframework spring-core ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-orm ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-aop ${spring.version} org.springframework spring-expression ${spring.version} org.springframework spring-test ${spring.version} org.springframework spring-tx ${spring.version} org.springframework spring-webmvc ${spring.version} cglib cglib 2.2.2 javax.servlet javax.servlet-api 3.0.1 provided jstl jstl 1.2 org.codehaus.jackson jackson-core-asl 1.8.4 org.codehaus.jackson jackson-mapper-asl 1.8.4 c3p0 c3p0 0.9.1.2 log4j log4j 1.2.8 org.json json 20090211 MySQL mysql-connector-java 5.1.6 spy spymemcached 2.6 org.slf4j slf4j-api 1.6.6 dataplatform
這個時候,就該進(jìn)行Spring配置了。按傳統(tǒng)方式來的話,首先要去web.xml寫一堆配置,然后建立個管理beab的Beans.xml,管理spring mvc 的xml,再寫一坨一坨Bean。就是先進(jìn)一點的(也就是很多人說的0配置),也就是自己的業(yè)務(wù)Bean不用寫進(jìn)xml了,還是很麻煩。
而我這里講的方式,則是完全不修改任何web.xml代碼,不寫一行XML代碼的方式。
首先,在項目立建立一個Config.java文件:
/** * Created by zhangpeng on 16-3-22. * 取代Beans.xml,純注解配置各種BEAN */ @Configuration @ComponentScan("com.csonezp") @EnableWebMvc public class Config { /** * jsp視圖解析器的bean * @return */ @Bean public UrlBasedViewResolver setupViewResolver() { UrlBasedViewResolver resolver = new UrlBasedViewResolver(); resolver.setPrefix("/WEB-INF/"); resolver.setSuffix(".jsp"); resolver.setViewClass(JstlView.class); return resolver; } /** * 配置數(shù)據(jù)源 * @return */ @Bean(name = "dataSource") public ComboPooledDataSource getDataSource() { try { ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mfdb"); dataSource.setDriverClass("com.mysql.jdbc.Driver"); dataSource.setUser("root"); dataSource.setPassword("zp1228"); dataSource.setMaxPoolSize(75); return dataSource; } catch (Exception e) { return null; } } }
@Configuration注解就是告訴Spring這個是一個配置文件類,這里配置的Bean要交給Spring去管理。這個就是用來取代Beans.xml這種文件的。
@ComponentScan("com.csonezp")這個注解就是配置包掃描用的,不必多說了
@EnableWebMvc ,啟用Spring MVC支持
這里面配置了兩個Bean,第一個就是JSP的視圖解析器,第二個則是配置了一個數(shù)據(jù)源。這些都可以對應(yīng)到XML文件里面去的。找一個傳統(tǒng)Spring項目,用xml文件對比著我這個類去看,會對這種配置方式有更深的了解。
下面要建立一個WebInitializer類繼承WebApplicationInitializer,在這里添加一個servlet。這一步是用來取代在web.xml中添加servlet的步驟
import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRegistration.Dynamic; public class WebInitializer implements WebApplicationInitializer { public void onStartup(ServletContext servletContext) throws ServletException { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(Config.class); ctx.setServletContext(servletContext); Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx)); servlet.addMapping("/"); servlet.setLoadOnStartup(1); } }
這樣就OK啦!讓我們寫一些代碼來測試一下吧!
import org.springframework.stereotype.Service; /** * Created by zhangpeng on 16-3-22. */ @Service public class HelloService { public String getHello(String name) { return name + ",Hello!"; } }
import com.guduo.dataplatform.service.HelloService; import com.guduo.dataplatform.service.MovieService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; /** * Created by zhangpeng on 16-3-22. */ @Controller @RequestMapping("/test") public class TestController { @Autowired HelloService helloService; @Autowired MovieService movieService; @RequestMapping("/hello") public String sayHello(@RequestParam("name") String name, ModelMap model) { model.put("hello", helloService.getHello(name)); return "hello"; } }
一個service,一個controller。
啟動項目,在瀏覽器中輸入地址http://localhost:8080/dp/test/hello?name=sss
頁面顯示sss,Hello!
完工!
額,忘了演示Confgig里配置的bean如何使用了。其實和XML里的一樣。這里拿一個DAO做演示吧,這里就注入了我們在config里配置的那個數(shù)據(jù)源
@Repository public class MoviePlayIncDao { private DataSource dataSource; private JdbcTemplate jdbcTemplateObject; @Autowired public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; this.jdbcTemplateObject = new JdbcTemplate(dataSource); } public ListgetMoviePlayInc(int movieId) { try { String SQL = "select * from movieplayincreament where movieid=?"; List list = jdbcTemplateObject.query(SQL, new MoviePlayIncMapper(), new Object[]{movieId}); return list; } catch (Exception e) { return null; } } }
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。