基于springboot+maven的工程级项目构建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq258513813/article/details/79709001

简介

springboot可以说是继springMVC之后,spring家族重点推出的一个轻量级的框架,可以完成基于 Spring 的应用程序的大部分配置工作。本文只介绍构建工程级的springboot项目构建过程,至于spring的具体细节涉及不多,可以参考官方文档:springboot官网

项目构建思路

应用级别的项目通常都是由多个子系统组成,例如一个对外服务的应用,通过包括这么几个部分:

  • 对外服务子系统(通常指浏览器网页接口、对外api接口、对外页面)
  • 对内服务子系统(内部管理后台应用:接口、网页等)
  • 定时任务子系统 (通常一些定时启动的任务)
  • 公共服务层级包(提供各个子系统共同使用的工具包服务方法)
    当然对内、对外的子系统还可以根据实际情况来拆分更小的服务和应用子系统,具体情况依据的实际业务情况而定。

项目构建步骤

上面提及到项目构建思路之后,我继续梳理下构建步骤,通常一个项目工程如果由多个子系统组成,那么这些子系统通常会依赖共同的数据源、服务公共类等,因此我们可以创建一个父工程来管理项目的各子系统模块,大致的构建步骤如下:
1. 使用mvn工具创建项目父工程;
2. https://start.spring.io/ 创建对应的子项目,web项目选择依赖;
3. 修改项目对应的pom.xml文件

数据源配置

目前来说web项目使用较多的一般是 mysql做业务数据库,另外加一个 redis 做缓存 ,下面我们就以这两个为例说明springboot 可以如何配置注入这两个数据源。

mysql

  1. 在未配置数据库时,需要将DataSource设置为exclude
    @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
  2. 配置DataSource,DataSource可由application.properties 按照springboot的命令规则直接读取配置
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/nieweb?lastUpdateCount=true&useUnicode=true&characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = 123456

redis

redis 配置首先可以引入 jedis 相关的依赖包

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.8.0</version>
</dependency>

通过配置redis bean 来演示第三方bean插件的注入方式

  • 第一步配置application.properties,将redis配置写入
redis.host=127.0.0.1
redis.port=6371
  • 第二步添加JedisProperties.java 配置读取类
@ConfigurationProperties(prefix = "redis")//通过添加该前缀会去读取配置文件对应的redis开头的配置
public class JedisProperties {

    private String host;//对应配置文件中redis.host

    private Integer port;///对应配置文件中redis.port

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public Integer getPort() {
        return port;
    }

    public void setPort(Integer port) {
        this.port = port;
    }
}
  • 第三部创建JedisBean.java 该类将创建Jedis bean 在 springboot启动时自动加载注入bean,类似xml文件的配置方式,代码如下:
@Configuration  //这是一个配置类,与@Service、@Component的效果类似。spring会扫描到这个类,@Bean才会生效,将ThreadPoolBean这个返回值类注册到spring上下文环境中
@EnableConfigurationProperties(JedisProperties.class) //通过这个注解, 将JedisProperties这个类的配置到上下文环境中,本类中使用的@Autowired注解注入才能生效
public class JedisBean {

    @Autowired
    private JedisProperties properties;

    @Bean //@Bean注解在方法上,返回值是一个类的实例,并声明这个返回值(返回一个对象)是spring上下文环境中的一个bean
    public Jedis getJedis() {
        Jedis redis = new Jedis(properties.getHost(),properties.getPort());
        return redis;
    }
}

通过上面几个步骤jedis就可以直接使用下面方式注入使用了:

@Autowired
private Jedis jedis;

servlet 和 Filter 配置注册

注解注册需要在Servlet类上加上@WebServlet,@WebFilter注解,Application里加上@ServletComponentScan开启Servlet注解扫描。如下:

  • servlet 注释注入方式
@WebServlet(urlPatterns = "/test/*",initParams = {
        @WebInitParam(name = "param1", value = "value1"),
})
public class TestServlet extends HttpServlet{
    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        String value=config.getInitParameter("param1");
        log.info("param1:{}",value);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter out = resp.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello World</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("Hello");
        out.println("</body>");
        out.println("</html>");
    }
}
  • FIlter 注释注入方式:
@WebFilter(filterName = "webFilter", urlPatterns = "/*",
        initParams = {@WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico")
})
public class WebFilter extends Filter {
}

本段参考:Spring boot 注册Servlet和Filter

猜你喜欢

转载自blog.csdn.net/qq258513813/article/details/79709001