博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC全注解
阅读量:6688 次
发布时间:2019-06-25

本文共 5995 字,大约阅读时间需要 19 分钟。

hot3.png

SpringMVC全注解 博客分类: spring

web.xml在servlet3.0里面已经被注解完全替代,但是spring里面的DispatcherServlet并没有被使用,本打算修改下源码弄成3.0的,奈何没啥时间。

这是一个标准的SpringMVC,重点是AppConfig与DBConfig,在Web.xml里面申明两个类的配置路径:

spring
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
com.test.commom.AppConfig
contextClass
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
1
spring
/

AppConfig:

@Configuration@ComponentScan(basePackageClasses = AppConfig.class)@EnableTransactionManagement //The code equals aop config or provider annotation transaction.@EnableAspectJAutoProxy@PropertySource({
"classpath:site-jdbc.properties"})public class AppConfig extends DBConfig {
/** * 国际化 * @return*/ @Bean @Qualifier("messageSource") public ResourceBundleMessageSource messageSource() { ResourceBundleMessageSource bundleMessageSource = new ResourceBundleMessageSource(); bundleMessageSource.setBasename("i18n.u1wan-i18n"); bundleMessageSource.setUseCodeAsDefaultMessage(true); return bundleMessageSource; } /** * file upload * @return*/ @Bean public CommonsMultipartResolver getCommonsMultipartResolver() { return new CommonsMultipartResolver(); } @Bean public SessionLocaleResolver localeResolver() { SessionLocaleResolver localeResolver = new SessionLocaleResolver(); return localeResolver; } @Bean public HessianProxyFactory loadHessianProxyFactory() { HessianProxyFactory hessianProxyFactory = new HessianProxyFactory(); return hessianProxyFactory; } /** * 定义spring MVC返回显示视图 * @return*/ @Bean public TilesViewResolver viewResolver() { return new TilesViewResolver(); } @Bean public LoginInterceptor loginInterceptor() { return new LoginInterceptor(); } @Bean public SystemInterceptor systemInterceptor() { return new SystemInterceptor(); } @Bean public PermissionsInterceptor permissionsInterceptor() { return new PermissionsInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor()); registry.addInterceptor(systemInterceptor()); registry.addInterceptor(permissionsInterceptor()); } /** * 定义xml显示位置 * @return*/ @Bean public TilesConfigurer tilesConfigurer() { TilesConfigurer tilesConfigurer = new TilesConfigurer(); tilesConfigurer.setDefinitions(new String[] { "classpath*:config/tiles/page-tiles.xml", "classpath*:config/tiles/common-tiles.xml" }); return tilesConfigurer; } /** * 定义Spring MVC显示 * @return*/ @Bean public CommonsMultipartResolver multipartResolver() { CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); return multipartResolver; }}

DBConfig:

public class DBConfig extends DefaultWebConfig {
@InjectEnvironment env;/** * 数据源 * @return */@Bean(destroyMethod = "close")public DataSource dataSource() {BasicDataSource dataSource = new BasicDataSource();dataSource.setDriverClassName(env.getRequiredProperty("jdbc.driver.name"));dataSource.setUrl(env.getRequiredProperty("jdbc.writedb.proxy.url"));dataSource.setUsername(env.getRequiredProperty("jdbc.username"));dataSource.setPassword(env.getRequiredProperty("jdbc.password"));dataSource.setTestOnBorrow(true);dataSource.setValidationQuery("select 1");return dataSource;}@Beanpublic SessionFactory sessionFactory() {LocalSessionFactoryBuilder builder = new LocalSessionFactoryBuilder(dataSource()).scanPackages(AppConfig.class.getPackage().getName());builder.setProperty(org.hibernate.cfg.Environment.DIALECT, MySQL5Dialect.class.getName());return builder.buildSessionFactory();}@Beanpublic MongoDBAccess mongoDBAccess() {MongoDBAccess mongoDBAccess = new MongoDBAccess();mongoDBAccess.setMongoServerIpAddress(env.getRequiredProperty("mongodb.ip"));mongoDBAccess.setCollectionName(env.getRequiredProperty("mongodb.collection"));mongoDBAccess.setMongoServerPort(Integer.parseInt(env.getRequiredProperty("mongodb.port")));mongoDBAccess.setDbName(env.getRequiredProperty("mongodb.db"));mongoDBAccess.initDB();return mongoDBAccess;}@Beanpublic SessionLocaleResolver localeResolver() {SessionLocaleResolver localeResolver = new SessionLocaleResolver();return localeResolver;} /** * hibernate事物 * @return*/@Beanpublic HibernateTransactionManager transactionManager() {HibernateTransactionManager transactionManager = new HibernateTransactionManager();transactionManager.setSessionFactory(sessionFactory());return transactionManager;}/** * ORM 映射--hibernate * @return */@Beanpublic HibernateAccess hibernateAccess() {HibernateAccess hibernateAccess = new HibernateAccess();hibernateAccess.setSessionFactory(sessionFactory());return hibernateAccess;}/** * JDBC--性能要求高场合 * @return */@Beanpublic JDBCAccess jdbcAccess() {JDBCAccess jDBCAccess = new JDBCAccess();jDBCAccess.setDataSource(dataSource());return jDBCAccess;}@Bean(name = "hibernateTransaction")public HibernateTransactionManager hibernateTransactionManager() {HibernateTransactionManager transactionManager = new HibernateTransactionManager();transactionManager.setSessionFactory(sessionFactory());return transactionManager;}}

通过类的配置,完全替代spring的配置文件,基本上不用配置文件,个人比较喜欢no配置文件的东西。

举例一个Controler:

@Controllerpublic class WebsiteController {
@Injectprivate WebsiteServer websiteServer;@RequestMapping(value = "/website/test", method = RequestMethod.GET)public String test(Map
map, WebsiteRequest request) {map.put("test", "test");return "test_page";}@RequestMapping(value = "/website/testbody", method = RequestMethod.GET)@ResponseBodypublic String testBody(Map
map) {try {websiteServer.test();} catch (Exception e) {e.printStackTrace();}return "test";}}http://www.tuicool.com/articles/6fQRja6

转载于:https://my.oschina.net/xiaominmin/blog/1599180

你可能感兴趣的文章
QT临时笔记
查看>>
一次、二次、三次指数平滑计算思想及代码
查看>>
TIDB 最佳实践
查看>>
linux 中mysql命令使用
查看>>
如何在 Laravel 中 “规范” 的开发验证码发送功能【社交系统ThinkSNS研发日记十一】...
查看>>
Linux 安装JDK Tomcat Eclipse
查看>>
arp(中间人***)-为pe文件注入后门
查看>>
13.2管理网络冗余与数据存储群集
查看>>
阿里开源的 java 诊断工具—— Arthas
查看>>
dedecms广告功能分析
查看>>
Confluence 6 升级自定义的站点和空间获得你的自定义布局
查看>>
Angular CLI 创建你的第一个 Angular 示例程序
查看>>
深入理解javascript原型和闭包(16)——完结
查看>>
近日记事2-PG库挂掉了,还是恢复吧~
查看>>
数据源ObjectDataSource的数据访问类的编写
查看>>
如何点击每一列的时候alert其index
查看>>
【原创翻译】类型
查看>>
深入解读Windows Azure VM 实例级 IP
查看>>
python常用函数
查看>>
Eclipse记录
查看>>