资讯专栏INFORMATION COLUMN

Spring零配置文件项目搭建

atinosun / 1212人阅读

摘要:使用注解的类相当于传统配置文件中的,该类中的方法可以通过标注成为。使用用来标明要扫描注解的包,相当于配置文件中的,会自动扫描注册指定包中使用注解指定的。使用注解可以引入配置文件,通过注入对象可以很方便的拿到配置文件中的内容。

本文主要记录Spring零配置的方法,包括相关类以及注解的使用方法。

Servlet配置

传统的servlet都是在web.xml中配置,从Servlet 3.0开始提供了ServletContainerInitializer接口,允许使用代码去配置servletsfilterslisteners

Spring为我们提供了一个该接口的实现类SpringServletContainerInitializer,查看源代码可以知道该类通过@HandlesTypes()注解指定了onStartup()方法的第一个参数接收WebApplicationInitializer实现类的集合。所以如果我们要使用这种方式配置servlet,只需要实现WebApplicationInitializer接口即可。

具体实现代码:

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

使用@Configuration注解的类相当于传统配置文件中的Beans,该类中的方法可以通过@Bean标注成为Bean。

@Configuration
public class SpringConfig {
    @Bean(name = "exampleBean")
    public ExampleBean getExampleBean() {
        return new ExampleBean();
    }
}
@ComponentScan

使用@ComponentScan用来标明要扫描注解的包,相当于配置文件中的context:component-scan,Spring会自动扫描注册指定包中使用注解指定的Bean。

@ComponentScan(basePackages = {"com.example.service","com.example.dao"})
@PropertySource

使用@PropertySource注解可以引入properties配置文件,通过注入Environment对象可以很方便的拿到配置文件中的内容。

@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文件内容:

ds.driver.classname=com.mysql.jdbc.Driver
ds.url=jdbc:mysql://...
ds.username=...
ds.password=...
...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66272.html

相关文章

  • Java后端

    摘要:,面向切面编程,中最主要的是用于事务方面的使用。目标达成后还会有去构建微服务,希望大家多多支持。原文地址手把手教程优雅的应用四手把手实现后端搭建第四期 SpringMVC 干货系列:从零搭建 SpringMVC+mybatis(四):Spring 两大核心之 AOP 学习 | 掘金技术征文 原本地址:SpringMVC 干货系列:从零搭建 SpringMVC+mybatis(四):Sp...

    joyvw 评论0 收藏0
  • SpringBoot2.x【一】从开始环境搭建

    摘要:一从零开始环境搭建对于之前的框架的使用,各种配置文件一旦出错之后错误难寻,这也是为什么被推上主流的原因,的配置简单,说分钟能从框架的搭建到运行也不为过现在更是微服务当道,所以在此总结下的一些知识,新手教程是一个基于和概念的项目自动化构建开源 SpringBoot2.x【一】从零开始环境搭建 对于之前的Spring框架的使用,各种配置文件XML、properties一旦出错之后错误难寻,...

    whjin 评论0 收藏0
  • Java3y文章目录导航

    摘要:前言由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 前言 由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 由于更新比较频繁,因此隔一段时间才会更新目录导航哦~想要获取最新原创的技术文章欢迎关注我的公众号:Java3y Java3y文章目录导航 Java基础 泛型就这么简单 注解就这么简单 Druid数据库连接池...

    KevinYan 评论0 收藏0
  • 开始搭建SSM框架(Spring + Spring MVC + Mybatis)

    摘要:打开,,选中,然后再选中,输入项目的和,指定等配置,修改,打开项目,添加一些必要的目录,最终项目框架目录图如下修改文件,指定各依赖和插件的版本等信息在标签里面管理各依赖的版本号添加项目依赖管理依赖配置好之后,开始整合。 最近在回顾和总结一些技术,想到了把之前比较火的 SSM 框架重新搭建出来,作为一个小结,同时也希望本文章写出来能对大家有一些帮助和启发,因本人水平有限,难免可能会有一些...

    MiracleWong 评论0 收藏0
  • 【Java EE】从开始写项目【总结】

    摘要:目前该功能并未完善,敬请期待。反正每次都会有新的东西补充上去一开始我本来想做的是可以使用微信登陆,也可以使用账户邮箱登陆,也可以使用短信登陆的。后来发现微信登陆要企业认证,做不了。 从零开发项目概述 最近这一直在复习数据结构和算法,也就是前面发出去的排序算法八大基础排序总结,Java实现单向链表,栈和队列就是这么简单,十道简单算法题等等... 被虐得不要不要的,即使是非常简单有时候绕半...

    imtianx 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<