当前位置: 首页 > wzjs >正文

网站基础建设网络营销网站推广

网站基础建设,网络营销网站推广,杭州pc网站制作公司,网站搭建的费用这里写目录标题1.前期准备1.1 创建Spring配置类2.Spring整合MyBatis2.1 Spring注册数据源(dataSource)2.2 Spring整合mybatis(添加mybatis配置类)2.2.1 SqlSessionFactoryBean2.2.2 MapperScannerConfigurer2.3 Spring整合事务管理3.Spring整合SpringMvc3.1 SpringMvc配置类3.2…

这里写目录标题

  • 1.前期准备
    • 1.1 创建Spring配置类
  • 2.Spring整合MyBatis
    • 2.1 Spring注册数据源(dataSource)
    • 2.2 Spring整合mybatis(添加mybatis配置类)
      • 2.2.1 SqlSessionFactoryBean
      • 2.2.2 MapperScannerConfigurer
    • 2.3 Spring整合事务管理
  • 3.Spring整合SpringMvc
    • 3.1 SpringMvc配置类
    • 3.2 初始化Spring、SpringMvc容器
    • 3.3 表现层数据封装
    • 3.4 全局异常处理器

1.前期准备

一、导入坐标

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.10.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.10.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.2.10.RELEASE</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version></dependency></dependencies>

1.1 创建Spring配置类

功能:使用SpringConfig配置类替代application.xml

@Configuration
@ComponentScan(value = "com.itheima",excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)
)
public class SpringConfig {
}

1.@Configuration

    该注解在类上,使得这个类的功能同于一个bean xml配置文件,可以在这个类中管理创建Bean。


2.@ComponentScan

    该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 <context:component-scan>

回顾以往xml的配置

<!-- 开启注解扫描 -->
<context:component-scan base-package="cn.itcast.usermanage.service"/>

2.Spring整合MyBatis

一、修改Spring配置类

@Configuration
@ComponentScan(value = "com.itheima",excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)
)
@PropertySource("jdbc.properties")
@Import({JdbcConfig.class, MybatisConfig.class})
public class SpringConfig {
}

@PropertySource

    通过@PropertySource注解可以将properties配置文件中的key/value存储到Spring的Environment中,Environment接口提供了方法去读取配置文件中的值,参数是properties配置文件中定义的key值。
    当然了,也可以使用@Value注解用${}占位符为bean的属性注入值。

回顾以往xml的配置

<!--    加载外部的properties文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>

@Import
    引入其他的配置类,需要在主配置类里引用,@Import(SecondJavaConfig.class)

回顾以往是怎么读取其他Spring配置文件的

1.将Spring主配置文件、Spring整合mybatis的配置文件、Spring整合事务的配置文件都统一放在spring文件夹下,并有统一的命名规范

在这里插入图片描述

2.初始化Spring容器时,读取这些文件,构造一个完整的Spring容器

在这里插入图片描述

    mybatis、transaction这些文件都可以写到主配置中,但是为了区分功能(解耦),所以各自定义了自己的配置文件
    在注解开发中,我们可以将其他配置类引入到主配置类中,这样只要读取主配置类即可


二、添加jdbc.properties

jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/my_database
jdbc.username=root
jdbc.password=root

2.1 Spring注册数据源(dataSource)

public class JdbcConfig {@Value("${jdbc.driverClass}")private String driver;@Value("${jdbc.url}")private String url;@Value("${jdbc.username}")private String username;@Value("${jdbc.password}")private String password;@Beanpublic DataSource dataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);return dataSource;}
}

    mybatis的底层是jdbc,mybatis是对jdbc的封装,此处我们将数据源的配置放到jdbc配置类中(其实也能放到mybatis的配置类,效果一样)

@Bean
    注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。

类同于

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"init-method="init" destroy-method="close"><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" />
</bean>

2.2 Spring整合mybatis(添加mybatis配置类)

  • 配置SqlSessionFactoryBean
    • 注入数据源
    • 设置全局配置(此处设置了别名)
  • 配置MapperScannerConfigurer
public class MybatisConfig {// 配置SqlSessionFactoryBean@Beanpublic SqlSessionFactoryBean SqlSessionFactory(DataSource dataSource) {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();// 注入数据源factoryBean.setDataSource(dataSource);// 扫描类型别名factoryBean.setTypeAliasesPackage("com.itheima.domain");return factoryBean;}@Beanpublic MapperScannerConfigurer mapperScannerConfigurer() {MapperScannerConfigurer msc = new MapperScannerConfigurer();// 扫描mapper接口msc.setBasePackage("com.itheima.dao");return msc;}
}

2.2.1 SqlSessionFactoryBean

一、回顾mybatis怎么初始化SqlSessionFactory
   在没有引入Spring概念时,我们是手动构建SqlSessionFactory,这个过程比较麻烦,现在我们有了Spring

public static void main(String[] args) throws IOException {String resource = "mybatis-config.xml";// 读取配置文件InputStream inputStream = Resources.getResourceAsStream(resource);// 构建sqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 获取sqlSessionSqlSession sqlSession = sqlSessionFactory.openSession(true);// 获取对应mapperOrderMapper orderMapper= sqlSession.getMapper(OrderMapper.class);Order order = orderMapper.queryOrderWithUser("20140921001");System.out.println(order);}

   在mybatis-spring的整合包下,存在一个sqlSessionFactoryBean,它是用来在spring容器中生产sqlSessionFactory的工厂Bean
在这里插入图片描述

二、回顾Spring整合mybatis(xml配置方式)
1.在applicationContext-mybatis.xml中定义SqlSessionFactoryBean
2.注入数据源以及mybatis全局配置(mybatis-config.xml)

<!-- spring构建sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 指定mybatis的数据源 --><property name="dataSource" ref="dataSource"></property><!-- 指定mybatis的全局配置文件 --><property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property>
</bean>

2.2.2 MapperScannerConfigurer

   MapperScannerConfigurer是为了解决MapperFactoryBean繁琐而生的,有了MapperScannerConfigurer就不需要我们去为每个映射接口去声明一个bean了。大大缩减了开发的效率。

一、回顾以往的mapper扫描

<mappers><package name="com.itheima.mapper"/>
</mappers>

2.3 Spring整合事务管理

  • 注解开启事务支持
  • 注册事务管理器(根据不同的持久化框架)
  • 给需要被事务管理的类、方法…添加@Transaction

一、添加注解 @EnableTransactionManagement 开启事务支持

@Configuration
@ComponentScan(value = "com.itheima",excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)
)
@PropertySource("jdbc.properties")
@Import({JdbcConfig.class, MybatisConfig.class})
@EnableTransactionManagement
public class SpringConfig {
}

二、在jdbc配置类中注册事务管理器

@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {// 不同的持久化框架,选择不同的事务管理器DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();transactionManager.setDataSource(dataSource);return transactionManager;
}

不同的持久化框架,需要使用不同的事务管理器

Spring为不同的持久化框架提供了不同PlatformTransactionManager接口实现:

事务说明
org.springframework.jdbc.datasource.DataSourceTransactionManager使用Spring JDBCiBatis进行持久化数据时使用
org.springframework.orm.hibernate5.HibernateTransactionManager使用Hibernate5.0版本进行持久化数据时使用
org.springframework.orm.jpa.JpaTransactionManager使用JPA进行持久化时使用
org.springframework.jdo.JdoTransactionManager当持久化机制是Jdo时使用
org.springframework.transaction.jta.JtaTransactionManager使用一个JTA实现来管理事务,在一个事务跨越多个资源时必须使用

三、在类、方法上添加事务注解@Transactional

@Transactional
public class BookServiceImpl implements BookService {.....
}

回顾之前我们是怎么注册事务管理器的

<!-- druid连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/my_database"/><property name="username" value="root"/><property name="password" value="root"/></bean><!-- 第一步:定义具体的平台事务管理器(DataSource事务管理器) --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 注入数据源 --><property name="dataSource" ref="dataSource"/></bean>

3.Spring整合SpringMvc

3.1 SpringMvc配置类

@Configuration
@ComponentScan("com.itheima.controller")
@EnableWebMvc
public class SpringMvcConfig {
}

@EnableWebMvc
有很多作用,这里仅使用其一种作用:开启自动转换json数据的支持


3.2 初始化Spring、SpringMvc容器

public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {// 初始化Spring容器protected Class<?>[] getRootConfigClasses() {return new Class[]{SpringConfig.class};}// 初始化SpringMvc容器protected Class<?>[] getServletConfigClasses() {return new Class[]{SpringMvcConfig.class};}protected String[] getServletMappings() {return new String[]{"/"};}
}

3.3 表现层数据封装

我们在进行业务操作后,响应给前端的数据格式可能是不同的,例如

  • 增、改、删操作,返回了boolean类型
  • 查询操作返回了对象类型

不便于前端对数据的解析,所以一般会设置成统一格式进行返回

设置统一的数据返回结果类

public class Result {private Object data;private Integer code;private String msg;
}

Result类中的字段并不是固定的,可以根据需要自行增减 提供若干个构造方法,方便操作

3.4 全局异常处理器

   所有的异常均需抛出到表现层进行处理,但是这样又出现了一个问题:表现层处理异常,每个方法中单独书写,代码书写量大且意义不强!

   使用AOP的思维,针对所有@Controller进行异常处理,SpringMvc针对此需求提供了一个异常处理器

全局异常处理器:
集中的、统一的处理项目中出现的异常(使用一个类就能搞定所有的异常)

@RestControllerAdvice
public class ProjectExceptionAdvice {    @ExceptionHandler(Exception.class)public Result doException(Exception ex){return new Result(666,null);}
}

@RestControllerAdvice
声明这个类是用于做异常处理(Spring需要读取到此类)

@RestControllerAdvice和@ControllerAdvice最大的不同在于:@RestControllerAdvice不用加@ResponseBody


@ExceptionHandler
指定拦截的异常


http://www.dtcms.com/wzjs/369943.html

相关文章:

  • 四川省城乡住房建设部网站首页免费发布活动的平台
  • 做企业营销网站google海外推广
  • 外贸网站制作广州推广网站最有效办法
  • 什么网站可以做兼职设计企业内训
  • 湖南网站seo地址福州seo招聘
  • 宁波市铁路建设指挥部网站网络优化app
  • 用html做登录网站网络搜索引擎优化
  • 邵阳疫情最新消息情况seo优化工具大全
  • WordPress手机主题冲突津seo快速排名
  • 网站模板 div百度指数官网数据
  • 太原百度网站快速排名关键词权重如何打造
  • 深圳做针织衫服装的网站网络优化工程师证书
  • 宁津华企动力做网站的电话多少推广app赚钱
  • h5开发网站优点北京网站制作
  • 网站轮播广告代码体验式营销案例
  • 绵阳新农网的网站是哪个公司做的网页开发用什么软件
  • 前端开发 网站建设外链吧怎么使用
  • 网站建设问题大全软文素材网
  • 自己做坑人网站的软件阿里大数据分析平台
  • 做网站work什百度文库首页官网
  • 广州白云区今天最新消息山东seo费用多少
  • 如何购买网站网站域名在哪里查询
  • 网站制作上首页企业网站建设哪家好
  • 虚拟主机 网站镜像南昌百度推广公司
  • 福州网站设计软件公司seo神器
  • b2c网站流量品牌营销策划方案范文
  • 网站开发 卡片佛山关键词排名工具
  • 东营做网站优化的公司潍坊网站开发公司
  • 做企划的网站新东方培训机构官网
  • 国家住房和城乡建设部中国建造师网站今天最新新闻国内大事件