`
m635674608
  • 浏览: 5043654 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

SpringMVC全注解

 
阅读更多

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

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

<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.test.commom.AppConfig</param-value>
</init-param>
<!-- use annotation replace xml configuration. @Configuration class is required. -->
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

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 {


@Inject
Environment 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;
}

@Bean
public 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();
}


@Bean
public 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;
}

@Bean
public SessionLocaleResolver localeResolver() {
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
return localeResolver;
}


   /**
* hibernate事物
* @return
*/
@Bean
public HibernateTransactionManager transactionManager() {
HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory());
return transactionManager;
}

/**
 * ORM 映射--hibernate
 * @return
 */
@Bean
public HibernateAccess hibernateAccess() {
HibernateAccess hibernateAccess = new HibernateAccess();
hibernateAccess.setSessionFactory(sessionFactory());
return hibernateAccess;
}

/**
 * JDBC--性能要求高场合
 * @return
 */
@Bean
public 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:

@Controller
public class WebsiteController {

@Inject
private WebsiteServer websiteServer;

@RequestMapping(value = "/website/test", method = RequestMethod.GET)
public String test(Map<String, Object> map, WebsiteRequest request) {
map.put("test", "test");
return "test_page";
}

@RequestMapping(value = "/website/testbody", method = RequestMethod.GET)
@ResponseBody
public String testBody(Map<String, Object> map) {
try {
websiteServer.test();
} catch (Exception e) {
e.printStackTrace();
}
return "test";
}

}

http://www.tuicool.com/articles/6fQRja6
分享到:
评论

相关推荐

    spring+mybatis+springmvc 全注解框架

    【标题】"spring+mybatis+springmvc 全注解框架"揭示了这是一个基于Java的Web开发框架,其中集成了Spring、MyBatis和SpringMVC这三个关键组件。Spring是全面的企业级应用框架,提供了依赖注入(DI)和面向切面编程...

    SpringMVC 全注解实现 servlet3.0以上的容器支持.docx

    ### SpringMVC全注解实现Servlet 3.0以上容器支持 #### 一、SpringMVC入门 **1.1 Request的处理过程** 在Web开发领域,每一个用户的交互行为都会触发一个HTTP请求(Request),而SpringMVC框架则是管理这些请求...

    SpringMVC纯注解配置

    "SpringMVC纯注解配置"是SpringMVC框架的一种高级用法,旨在减少XML配置文件的使用,提高开发效率和代码可读性。在这个主题中,我们将深入探讨如何利用注解实现SpringMVC的配置以及jQuery如何处理后台返回的JSON对象...

    Spring4.0从入门到精通springmvc全注解

    例子参考了这位地址 http://www.blogjava.net/pengo/archive/2010/07/03/325164.html 但里面的jar包与目录结构发生了变化,本mvc全注解注意看那个click的链接是一个类似rest风格的例子

    springmvc常用注解标签详解

    SpringMVC 中常用的注解标签详解 在 SpringMVC 框架中,注解标签扮演着非常重要的角色,它们使得开发者可以轻松地定义控制器、请求映射、依赖注入等内容。在本文中,我们将详细地解释 SpringMVC 中常用的注解标签,...

    注解和注释以及Spring和SpringMVC常用的注解.rtf

    注解和注释以及Spring和SpringMVC常用的注解 1.两者区别 注解 :参与代码编译,以@开头的。它是给应用程序看的,单独使用注解毫无意义,一定要跟工具一起使用,这个所谓的工具实际就是能读懂注解的应用程序  注释 :...

    Spring mvc全注解框架

    此框架结合了springmvc,hibernate,mybatis3.1,log4j2. 其中mybatis和hibernate只要在spring的配置文件注释一下就可以选择其中一个了。 事务处理,日志设置。所有东西都设置好了。完全满足中小项目直接开发

    spring,springMVC,Hibernate全注解案例

    这个"spring,springMVC,Hibernate全注解案例"旨在通过注解的方式,帮助开发者理解如何在不编写XML配置的情况下,实现数据库与应用程序的交互。 Spring框架是一个全面的后端开发解决方案,它包含了依赖注入(DI)和...

    Redis 与SpringMVC 基于注解方式 集成

    本文将深入探讨如何在SpringMVC项目中,通过注解方式集成Redis,以实现高效的数据交互。 首先,我们需要在项目中引入Redis的相关依赖。这通常通过在`pom.xml`文件中添加Spring Data Redis和Jedis客户端库的Maven...

    SpringMVC例子注解

    在本示例中,我们将深入探讨SpringMVC中的一些关键注解,这些注解在开发过程中起着至关重要的作用。 1. `@Controller`: 这是Spring MVC中的核心注解,用于标记一个类作为控制器。当Spring扫描到这个注解时,会将...

    SPRINGMVC 注解范例程序

    在"SPRINGMVC 注解范例程序"中,我们可以深入理解 Spring MVC 如何利用注解进行配置简化,提高开发效率。下面将详细介绍 Spring MVC 中的关键注解和其工作原理。 1. **@Controller**:这是 Spring MVC 中的核心注解...

    非注解Springmvc+spring+hibernate 入门实例

    下面我们将深入探讨"非注解SpringMVC+Spring+Hibernate入门实例"中的关键知识点。 首先,让我们从SpringMVC开始。SpringMVC是一个Model-View-Controller架构模式的实现,用于构建Web应用程序。在非注解方式下,我们...

    SpringMVC注解开发的详解.doc

    SpringMVC注解开发是Java Web开发中一种高效的方式,它极大地简化了控制器的定义和请求处理。在SpringMVC框架中,`@Controller`注解用于标识一个类作为处理HTTP请求的控制器。这个注解使得类中的方法可以被SpringMVC...

    SpringMVC注解驱动的控制器详解

    SpringMVC注解驱动的控制器详解,具体效果与过程看博文 http://blog.csdn.net/evankaka/article/details/45562951

    SpringMvc注解详解

    【SpringMvc注解详解】 SpringMvc 是 Spring 框架的一部分,主要负责处理 Web 请求。在 SpringMVC 中,注解扮演着至关重要的角色,它们简化了代码并减少了配置。以下是一些常用的 SpringMVC 注解及其详细解释: 1....

    SpringMVC纯注解快速搭建

    SpringMVC纯注解快速搭建

    springMVC注解大全

    注解在Spring MVC中扮演着核心角色,它们使得代码更加简洁、可读性更强,减少了XML配置的需求。以下是对Spring MVC中一些关键注解的详细解释: 1. `@Controller`:这个注解用于标记一个类作为Spring MVC的控制器。...

    springmvc注解简单实例

    在这个"springmvc注解简单实例"中,我们将深入探讨Spring MVC中的一些关键注解,以及它们在DAO层、Service层和Controller层中的应用。让我们逐一解析这些层面的注解使用。 首先,我们来到**DAO层**。在Spring MVC中...

    03springmvc注解驱动开发的servlet3.0初始化配置类.avi

    03springmvc注解驱动开发的servlet3.0初始化配置类.avi

Global site tag (gtag.js) - Google Analytics