springboot可以说是继springMVC之后,spring家族重点推出的一个轻量级的框架,可以完成基于 Spring 的应用程序的大部分配置工作。本文只介绍构建工程级的springboot项目构建过程,至于spring的具体细节涉及不多,可以参考官方文档:springboot官网。
应用级别的项目通常都是由多个子系统组成,例如一个对外服务的应用,通过包括这么几个部分:
上面提及到项目构建思路之后,我继续梳理下构建步骤,通常一个项目工程如果由多个子系统组成,那么这些子系统通常会依赖共同的数据源、服务公共类等,因此我们可以创建一个父工程来管理项目的各子系统模块,大致的构建步骤如下:
1. 使用mvn工具创建项目父工程;
2. https://start.spring.io/ 创建对应的子项目,web项目选择依赖;
3. 修改项目对应的pom.xml文件
目前来说web项目使用较多的一般是 mysql做业务数据库,另外加一个 redis 做缓存 ,下面我们就以这两个为例说明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 配置首先可以引入 jedis 相关的依赖包
<dependency>
<groupId>redis.clientsgroupId>
<artifactId>jedisartifactId>
<version>2.8.0version>
dependency>
通过配置redis bean 来演示第三方bean插件的注入方式
redis.host=127.0.0.1
redis.port=6371
@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;
}
}
@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类上加上@WebServlet,@WebFilter注解,Application里加上@ServletComponentScan开启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("");
out.println("");
out.println("Hello World ");
out.println("");
out.println("");
out.println("Hello");
out.println("");
out.println("");
}
}
@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