【问题标题】:Resources on building Spring MVC Applications using Annotations使用注解构建 Spring MVC 应用程序的资源
【发布时间】:2015-08-26 14:30:03
【问题描述】:

我最近加入的公司开发了所有基于 Spring MVC 的项目,充分利用了 Annotations,并且很少甚至不使用 XML(我目前正在从事的项目仅使用 tiles.xml 进行切片配置)。

我过去读过的绝大多数书籍和教程都侧重于 XML 配置。为了跟上开发团队的步伐,我以“逆向工程”的方式工作,搜索我在项目中不熟悉的东西。

显然,这是耗时且适得其反的,因为我在各个方面(如何在一个教程中配置 bean,如何在另一个教程中配置解析器等)都有分散的参考。

官方 Spring 文档已被证明在许多领域都非常有用,但我更愿意阅读基于 Annotations 的教程/系列教程/书籍,并使用官方文档进行参考/交叉检查。

有什么建议吗?

【问题讨论】:

    标签: spring spring-mvc configuration annotations


    【解决方案1】:

    对我来说,这真的很有用。 http://websystique.com/spring-4-mvc-tutorial/

    我现有项目之一的配置可能会对您有所帮助。

    AppInitializer.java 代替 web.xml

    @Configuration
    public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] {AppConfig.class };
    }
    
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }
    
    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
    }
    

    用于配置spring mvc的AppConfig.java

    @EnableWebMvc
    @Configuration
    @ComponentScan(basePackages = "com.aaaa.bbbb")
    public class AppConfig extends WebMvcConfigurerAdapter {
    
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/pages/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
    
    public MessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        messageSource.setBasename("messages");
        return messageSource;
    }
    }
    

    和休眠配置

    @Configuration
    @EnableTransactionManagement
    @PropertySource(value = { "classpath:application.properties" })
    public class HibernateConfiguration {
    @Autowired
    private Environment environment;
    
    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setPackagesToScan(new String[] { "com.jjjj.kkkk.pojo" });
        sessionFactory.setHibernateProperties(hibernateProperties());
        return sessionFactory;
    }
    
    @Bean(name = "dataSource")
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverClassName"));
        dataSource.setUrl(environment.getRequiredProperty("jdbc.url"));
        dataSource.setUsername(environment.getRequiredProperty("jdbc.username"));
        dataSource.setPassword(environment.getRequiredProperty("jdbc.password"));
        return dataSource;
    }
    
    private Properties hibernateProperties() {
        Properties properties = new Properties();
        properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect"));
        properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
        properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));
        properties.put("hibernate.hbm2ddl.auto", environment.getRequiredProperty("hibernate.automaticschema"));
        properties.put("hibernate.search.default.directory_provider",
                environment.getRequiredProperty("hibernate.search.default.directory_provider"));
        properties.put("hibernate.search.default.indexBase",
                environment.getRequiredProperty("hibernate.search.default.indexBase"));
    
        return properties;
    }
    
    @Bean
    @Autowired
    public HibernateTransactionManager transactionManager(SessionFactory s) {
        HibernateTransactionManager txManager = new HibernateTransactionManager();
        txManager.setSessionFactory(s);
        return txManager;
    }
    }
    

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多