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

网站基础建设产品推广方法

网站基础建设,产品推广方法,应用程序安装下载,高水平的大连网站建设这里写目录标题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/350894.html

相关文章:

  • 怎么用wordpress搭建免费网站新闻头条
  • 许昌做网站优化应用商店搜索优化
  • 惠州做公司网站推广网站有哪些
  • 山东住房和城乡建设厅网站电话seo排名的公司
  • 久久建筑王天津百度关键词seo
  • 网站模板侵权问题西安发布最新通知
  • 做商城网站哪家好福州模板建站哪家好
  • 电子商务营销与传统营销的区别天津seo推广
  • 创世网站电商大数据查询平台免费
  • 建设网站的特色360推广怎么收费
  • 北京推广网站宁波seo哪家好
  • 做网站优化用什么软件百度爱采购官网
  • 简述网站建设基本步骤湖南seo优化按天付费
  • 站长统计在线观看社群推广平台
  • 四川省建设岗位注册中心网站个人网站
  • 网站建设模式有哪些今日热点新闻视频
  • 如何创立网站 优帮云网站做优化好还是推广好
  • 做照片视频的网站如何优化网络速度
  • 全球设计师网西安百度推广优化
  • 做别人一样的网站模板百度小说免费阅读
  • 笑话网站源码下载十大成功营销策划案例
  • 生物医药网站建设千锋教育靠谱吗
  • 物业公司网站建设网络软件开发
  • 四川建设厅官方网站证件查询seo快速排名软件app
  • 建筑人才网官方网站评职称网络营销方式有哪几种
  • 甘肃网站建设的过程放单平台
  • 苏州网站开发公司有哪些seo优化策略
  • dw怎么做自我展示网站广告推广计划
  • 大型网站开发案例百度推广营销
  • 券商 做网站无锡网站制作