SpringBoot 的配置 一 拦截器的配置 1 定义一个表单 <form action="/add" method="post"> 用户名 :<input type="text" name="name"/><br/> 密 码 :<input type="password" name="pwd"/><br/> <input type="submit" value=" 提交 "/> </form> </body> 2 定义表单数据的控制器 @RequestMapping("/addPre") public String addpre() { return "pages/emp"; @RequestMapping("/add") @ResponseBody public Object add(emp emp) { System.out.println(emp); return emp; 3 定义拦截器 package com.sun.interceptor; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import org.springframework.context.annotation.configuration; import org.springframework.web.method.handlermethod; import org.springframework.web.servlet.handlerinterceptor; import org.springframework.web.servlet.modelandview; @Configuration public class MyInterceptor implements HandlerInterceptor{ public boolean prehandle(httpservletrequest req, HttpServletResponse resp, Object handler) throws Exception { HandlerMethod handlermethod = (HandlerMethod) handler; System.out.println("++++++++++++++ 处理表单参数之前 : "+handlermethod.getbean().getclass().getname()); return true; public void posthandle(httpservletrequest req, HttpServletResponse resp, Object handler, ModelAndView arg3) throws Exception { HandlerMethod handlermethod = (HandlerMethod) handler; System.out.println("++++++++++++++ 目标控制器正在处理表单参数 :
"+handlermethod.getbean().getclass().getname()); public void aftercompletion(httpservletrequest req, HttpServletResponse resp, Object handler, Exception arg3) throws Exception { HandlerMethod handlermethod = (HandlerMethod) handler; System.out.println("++++++++++++++ 目标控制器处理表单参数完毕 : "+handlermethod.getbean().getclass().getname()); 4 定义配置类 package com.sun.microboot.config; import org.springframework.context.annotation.configuration; import org.springframework.web.servlet.config.annotation.interceptorregistry; import org.springframework.web.servlet.config.annotation.webmvcconfigureradapter; import com.sun.interceptor.myinterceptor; @Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter{ public void addinterceptors(interceptorregistry registry) { registry.addinterceptor(new MyInterceptor()).addPathPatterns("/**"); super.addinterceptors(registry); 5 测试 http://localhost/addpre ++++++++++++++ 处理表单参数之前 :com.sun.controller.empcontroller ++++++++++++++ 目标控制器正在处理表单参数 :com.sun.controller.empcontroller ++++++++++++++ 目标控制器处理表单参数完毕 :com.sun.controller.empcontroller ++++++++++++++ 处理表单参数之前 :com.sun.controller.empcontroller Emp [eid=null, name=, age=null, sal=null, email=null, hiredate=null] ++++++++++++++ 目标控制器正在处理表单参数 :com.sun.controller.empcontroller ++++++++++++++ 目标控制器处理表单参数完毕 :com.sun.controller.empcontroller 二 AOP 的配置 1 定义业务层接口 package com.sun.service.impl; import org.springframework.stereotype.service; import com.sun.service.iempservice; @Service public class EmpServiceImpl implements IEmpService{
public boolean add() throws Exception { System.out.println(" 插入数据成功 "); return true; public boolean update() throws Exception { System.out.println(" 修改数据成功 "); return false; 2 业务层的实现类 package com.sun.service; public interface IEmpService { /** * 增加数据 * @return 成功返回 true, 否则返回 false * @throws Exception */ public boolean add() throws Exception; /** * 实现数据的修改 * @return 成功返回 true 否则返回 false * @throws Exception */ public boolean update() throws Exception; 3 导入 AOP 开发包 4 定义切面类 package com.sun.aop; import java.util.arrays; <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-aop</artifactid> import org.aspectj.lang.proceedingjoinpoint; import org.aspectj.lang.annotation.around; import org.aspectj.lang.annotation.aspect; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.stereotype.component; @Aspect @Component
public class EmpAop { Logger logger = LoggerFactory.getLogger(EmpAop.class); @Around("execution(* com.sun.service..*.*(..))") public Object arroundinvoke(proceedingjoinpoint point) throws Throwable{ // 取得参数 logger.info(" 执行方法之前的参数是 :"+Arrays.toString(point.getArgs())); // 执行目标方法 Object result = point.proceed(); // 将目标方法返回值继续返回给调用处 logger.info(" 执行方法后取得返回值 :"+result); return result; 5 在控制层调用业务层的方法 @RequestMapping("/add") @ResponseBody public Object add(emp emp) throws Exception { this.empservice.add(); System.out.println(emp); return emp; 6 测试 http://localhost/add 三 Druid 连接池 1 创建数据库脚本执行 -- 删除数据库 DROP DATABASE IF EXISTS bootdb; -- 创建数据库 CREATE DATABASE bootdb CHARACTER SET utf8; -- 使用数据库 USE bootdb; -- 删除数据表 DROP TABLE IF EXISTS dept; -- 创建数据表 CREATE TABLE dept( deptno INT AUTO_INCREMENT, title VARCHAR(100), CONSTRAINT pk_deptno PRIMARY KEY(deptno) ); INSERT INTO dept(title)values(' 研发部门 '); INSERT INTO dept(title)values(' 测试部门 '); INSERT INTO dept(title)values(' 市场部门 ');
2 导入 mysql 驱动包和 Druid 连接池的开发包 <!-- mysql 驱动包 --> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <version>5.1.20</version> <!-- Druid 开发包 --> <groupid>com.alibaba</groupid> <artifactid>druid</artifactid> <version>1.1.2</version> <!-- mybatis 的开发包 --> <groupid>org.mybatis.spring.boot</groupid> <artifactid>mybatis-spring-boot-starter</artifactid> <version>1.3.0</version> </dependencies> 3 在子 pom 文件在次导入驱动和连接池的开发包 <!-- mysql 驱动包 --> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <!-- Druid 开发包 --> <groupid>com.alibaba</groupid> <artifactid>druid</artifactid> <!-- mybatis 开发包 --> <groupid>org.mybatis.spring.boot</groupid> <artifactid>mybatis-spring-boot-starter</artifactid> 4 配置 application.yml 文件 server: port: 80 # 端口号 spring: # 表示该配置是交给 spring 进行处理 messages: # 处理的内容是资源文件 basename: i18n/messages,i18n/pages # 资源看文件爱你所在的目录和名称 datasource: type: com.alibaba.druid.pool.druiddatasource driver-class-name: com.mysql.jdbc.driver
url: jdbc:mysql://localhost:3306/bootdb username: root password: 1234 dbcp2: min-idle: 5 # 指定连接池维持的最少连接数 initial-size: 10 # 初始化连接数 max-total: 100 # 最大连接数 max-wait-millis: 1000 # 最大连接等待时间 5 导入 Druid 连接池需要集合 ORM 框架一起使用, 因此需要导入 Mybatis-spring-boot-starter 的开发包 <!-- mybatis 集合开发包 --> <groupid>org.mybatis.spring.boot</groupid> <artifactid>mybatis-spring-boot-starter</artifactid> 6 使用 Junit 进行测试 package com.sun.test; import java.sql.sqlexception; import javax.annotation.resource; import javax.sql.datasource; import org.junit.test; import org.junit.runner.runwith; import org.springframework.boot.test.context.springboottest; import org.springframework.test.context.junit4.springjunit4classrunner; import org.springframework.test.context.web.webappconfiguration; import com.sun.springbootstartclass; @SpringBootTest(classes=SpringBootStartClass.class) @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration public class TestDataSource { @Resource private DataSource datasource; @Test public void testdatasource() { try { System.out.println(this.dataSource.getConnection()); catch (SQLException e) { e.printstacktrace();