望城区网站建设中国外贸数据网

pingmian/2026/1/20 17:28:07/文章来源:
望城区网站建设,中国外贸数据网,管理咨询公司名称大全,怎么看网站谁做的目录 一 第三方资源配置管理1 管理DataSource连接池对象问题导入1.1 管理Druid连接池1.2 管理c3p0连接池 2 加载properties属性文件问题导入2.1 基本用法2.2 配置不加载系统属性2.3 加载properties文件写法 二 Spring容器1 Spring核心容器介绍问题导入1.1 创建容器1.2 获取bean… 目录 一 第三方资源配置管理1 管理DataSource连接池对象问题导入1.1 管理Druid连接池1.2 管理c3p0连接池 2 加载properties属性文件问题导入2.1 基本用法2.2 配置不加载系统属性2.3 加载properties文件写法 二 Spring容器1 Spring核心容器介绍问题导入1.1 创建容器1.2 获取bean对象1.3 容器类层次结构1.4 BeanFactory 2 Spring核心容器总结2.1 容器相关2.2 bean相关2.3 依赖注入相关 三 Spring注解开发1 注解开发定义Bean对象问题导入1.1 基本使用1.2 Component三个衍生注解 2 纯注解开发模式问题导入2.1 纯注解开发模式介绍2.2 代码演示 3 注解开发Bean作用范围和生命周期管理问题导入3.1 bean作用范围注解配置3.2 bean生命周期注解配置 4 注解开发依赖注入问题导入4.1 使用Autowired注解开启自动装配模式按类型4.2 使用Qualifier注解指定要装配的bean名称4.3 使用Value实现简单类型注入 5 注解开发管理第三方Bean问题导入【第一步】单独定义配置类【第二步】将独立的配置类加入核心配置方式1Import注解导入式方式2ComponentScan扫描式 6 注解开发为第三方Bean注入资源问题导入6.1 简单类型依赖注入6.2 引用类型依赖注入 7 注解开发总结 四 Spring整合其他技术1 Spring整合mybatis1.1 思路分析问题导入1.1.1 MyBatis程序核心对象分析1.1.2 整合MyBatis 1.2 代码实现问题导入【前置工作】【第一步】导入Spring整合Mybatis依赖【第二步】创建JdbcConfig配置DataSource数据源【第三步】创建MybatisConfig整合mybatis【第四步】创建SpringConfig主配置类进行包扫描和加载其他配置类【第五步】定义测试类进行测试 2 Spring整合Junit单元测试问题导入【第一步】导入整合的依赖坐标spring-test【第二步】使用Spring整合Junit专用的类加载器【第三步】加载配置文件或者配置类 一 第三方资源配置管理 说明以管理DataSource连接池对象为例讲解第三方资源配置管理 1 管理DataSource连接池对象 问题导入 配置数据库连接参数时注入驱动类名是用driverClassName还是driver 1.1 管理Druid连接池 数据库准备 create database if not exists spring_db character set utf8; use spring_db; create table if not exists tbl_account(id int primary key auto_increment,name varchar(20),money double ); insert into tbl_account values(null,Tom,1000); insert into tbl_account values(null,Jerry,1000);【第一步】添加Druid连接池依赖 dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.8/version /dependency dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.20/version /dependency注意除了添加以上两个依赖之外别忘了添加spring-context依赖。 【第二步】配置DruidDataSource连接池Bean对象 bean iddataSource classcom.alibaba.druid.pool.DruidDataSourceproperty namedriverClassName valuecom.mysql.cj.jdbc.Driver/property nameurl valuejdbc:mysql://localhost:3306/spring_db?characterEncodingutf8amp;useSSLfalseamp;serverTimezoneAsia/Shanghaiamp;rewriteBatchedStatementstrue/property nameusername valueroot/property namepassword valueroot/ /bean【第三步】在测试类中从IOC容器中获取连接池对象并打印 public class App {public static void main(String[] args) {ApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml);DataSource dataSource (DataSource) ctx.getBean(dataSource);System.out.println(dataSource);} }打印结果 1.2 管理c3p0连接池 【第一步】添加c3p0连接池依赖 dependencygroupIdc3p0/groupIdartifactIdc3p0/artifactIdversion0.9.1.2/version /dependency【第二步】配置c3p0连接池Bean对象 bean iddataSource classcom.mchange.v2.c3p0.ComboPooledDataSourceproperty namedriverClass valuecom.mysql.cj.jdbc.Driver/property namejdbcUrl valuejdbc:mysql://localhost:3306/spring_db?characterEncodingutf8amp;useSSLfalseamp;serverTimezoneAsia/Shanghaiamp;rewriteBatchedStatementstrue/property nameuser valueroot/property namepassword valueroot//bean注意同一个Spring容器中不能有两个iddataSource的连接池。 【第三步】在测试类中从IOC容器中获取连接池对象并打印 public class App {public static void main(String[] args) {ApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml);DataSource dataSource (DataSource) ctx.getBean(dataSource);System.out.println(dataSource);} }运行结果 com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement - 3, acquireRetryAttempts - 30, acquireRetryDelay - 1000, autoCommitOnClose - false, automaticTestTable - null, breakAfterAcquireFailure - false, checkoutTimeout - 0, connectionCustomizerClassName - null, connectionTesterClassName - com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName - 1hge0yzax1fmo0yo1qse2m7|4f7d0008, debugUnreturnedConnectionStackTraces - false, description - null, driverClass - com.mysql.cj.jdbc.Driver, factoryClassLocation - null, forceIgnoreUnresolvedTransactions - false, identityToken - 1hge0yzax1fmo0yo1qse2m7|4f7d0008, idleConnectionTestPeriod - 0, initialPoolSize - 3, jdbcUrl - jdbc:mysql://localhost:3306/spring_db?characterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghairewriteBatchedStatementstrue, maxAdministrativeTaskTime - 0, maxConnectionAge - 0, maxIdleTime - 0, maxIdleTimeExcessConnections - 0, maxPoolSize - 15, maxStatements - 0, maxStatementsPerConnection - 0, minPoolSize - 3, numHelperThreads - 3, numThreadsAwaitingCheckoutDefaultUser - 0, preferredTestQuery - null, properties - {user******, password******}, propertyCycle - 0, testConnectionOnCheckin - false, testConnectionOnCheckout - false, unreturnedConnectionTimeout - 0, usesTraditionalReflectiveProxies - false ]2 加载properties属性文件 目的将数据库的连接参数抽取到一个单独的文件中与Spring配置文件解耦。 问题导入 问题1如何解决使用EL表达式读取属性文件中的值结果读取到了系统属性问题 问题2加载properties文件写法标准写法该怎么写 2.1 基本用法 【第一步】编写jdbc.properties属性文件 jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/spring_db?characterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghairewriteBatchedStatementstrue jdbc.usernameroot jdbc.passwordroot【第二步】在applicationContext.xml中开启开启context命名空间加载jdbc.properties属性文件 小技巧如果同学们觉得上述复制粘贴方式不好改或者容易改错其实idea是有提示功能的注意不要选错就行了。有些版本的idea没有这个提示那么就按照上面复制粘贴的方式改改完之后可以做成live template模板后期直接用。 context:property-placeholder locationjdbc.properties/【第三步】在配置连接池Bean的地方使用EL表达式获取jdbc.properties属性文件中的值 bean classcom.alibaba.druid.pool.DruidDataSourceproperty namedriverClassName value${jdbc.driver}/property nameurl value${jdbc.url}/property nameusername value${jdbc.username}/property namepassword value${jdbc.password}/ /bean配置完成之后运行之前的获取Druid连接池代码可以获取到连接池对象就表示配置成功。 2.2 配置不加载系统属性 问题 如果属性文件中配置的不是jdbc.username而是usernameroot666那么使用${username}获取到的不是root666而是计算机的名称。 原因 系统属性的优先级比我们属性文件中的高替换了我们的usernameroot666。 解决 解决1换一个名称例如不叫username叫jdbc.username。 解决2使用system-properties-modeNEVER属性表示不使用系统属性。 context:property-placeholder locationjdbc.properties system-properties-modeNEVER/2.3 加载properties文件写法 不加载系统属性 context:property-placeholder locationjdbc.properties system-properties-modeNEVER/加载多个properties文件 context:property-placeholder locationjdbc.properties,msg.properties/加载所有properties文件 context:property-placeholder location*.properties/加载properties文件 标准格式 context:property-placeholder locationclasspath:*.properties/从路径或jar包中搜索并加载properties文件 context:property-placeholder locationclasspath*:*.properties/二 Spring容器 1 Spring核心容器介绍 问题导入 问题按照Bean名称获取Bean有什么弊端按照Bean类型获取Bean有什么弊端 1.1 创建容器 方式一类路径加载配置文件 ApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml);方式二文件路径加载配置文件 ApplicationContext ctx new FileSystemXmlApplicationContext(D:\\applicationContext.xml);加载多个配置文件 ApplicationContext ctx new ClassPathXmlApplicationContext(bean1.xml, bean2.xml);1.2 获取bean对象 方式一使用bean名称获取 需要自己强制类型转换 BookDao bookDao (BookDao) ctx.getBean(bookDao);方式二使用bean名称获取并指定类型 推荐使用 BookDao bookDao ctx.getBean(bookDao, BookDao.class);方式三使用bean类型获取 如果IOC容器中同类型的Bean对象有多个此处获取会报错 BookDao bookDao ctx.getBean(BookDao.class);1.3 容器类层次结构 1.4 BeanFactory 类路径加载配置文件 Resource resources new ClassPathResource(applicationContext.xml); BeanFactory bf new XmlBeanFactory(resources); BookDao bookDao bf.getBean(bookDao, BookDao.class); bookDao.save();BeanFactory创建完毕后所有的Bean均为延迟加载也就是说我们调用getBean()方法获取Bean对象时才创建Bean对象并返回给我们 2 Spring核心容器总结 2.1 容器相关 BeanFactory是IoC容器的顶层接口初始化BeanFactory对象时加载的bean延迟加载ApplicationContext接口是Spring容器的核心接口初始化时bean立即加载ApplicationContext接口提供基础的bean操作相关方法通过其他接口扩展其功能ApplicationContext接口常用初始化类 ClassPathXmlApplicationContext(常用)FileSystemXmlApplicationContext 2.2 bean相关 2.3 依赖注入相关 三 Spring注解开发 1 注解开发定义Bean对象 目的xml配置Bean对象有些繁琐使用注解简化Bean对象的定义 问题导入 问题1使用什么标签进行Spring注解包扫描 问题2Component注解和Controller、Service、Repository三个衍生注解有什么区别 1.1 基本使用 【第一步】在applicationContext.xml中开启Spring注解包扫描 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:contexthttp://www.springframework.org/schema/contextxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd!--扫描com.itheima包及其子包下的类中注解--context:component-scan base-packagecom.itheima/ /beans【第二步】在类上使用Component注解定义Bean。 //Component定义bean Component(bookDao) public class BookDaoImpl implements BookDao {public void save() {System.out.println(book dao save ...);} } Component public class BookServiceImpl implements BookService {private BookDao bookDao;public void setBookDao(BookDao bookDao) {this.bookDao bookDao;}public void save() {System.out.println(book service save ...);bookDao.save();} }补充说明如果Component注解没有使用参数指定Bean的名称那么类名首字母小写就是Bean在IOC容器中的默认名称。例如BookServiceImpl对象在IOC容器中的名称是bookServiceImpl。 【第三步】在测试类中获取Bean对象 public class AppForAnnotation {public static void main(String[] args) {ApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml);BookDao bookDao (BookDao) ctx.getBean(bookDao);System.out.println(bookDao);//按类型获取beanBookService bookService ctx.getBean(BookService.class);System.out.println(bookService);} }注意在测试类中不要调用bookService的save方法因为还没有给BookServiceImpl中的bookDao赋值调用bookService的save方法会出现空指针异常。 运行结果 1.2 Component三个衍生注解 说明加粗的注解为常用注解 Spring提供 Component 注解的三个衍生注解 Controller用于表现层bean定义Service用于业务层bean定义Repository用于数据层bean定义 Repository(bookDao) public class BookDaoImpl implements BookDao { }Service public class BookServiceImpl implements BookService { }2 纯注解开发模式 问题导入 问题1配置类上使用什么注解表示该类是一个配置类 问题2配置类上使用什么注解进行Spring注解包扫描 2.1 纯注解开发模式介绍 Spring3.0开启了纯注解开发模式使用Java类替代配置文件开启了Spring快速开发赛道Java类代替Spring核心配置文件 Configuration注解用于设定当前类为配置类ComponentScan注解用于设定扫描路径此注解只能添加一次多个数据请用数组格式 ComponentScan({com.itheima.service,com.itheima.dao})读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象 //加载配置文件初始化容器 ApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml); //加载配置类初始化容器 ApplicationContext ctx new AnnotationConfigApplicationContext(SpringConfig.class);2.2 代码演示 【第一步】定义配置类代替配置文件 //声明当前类为Spring配置类 Configuration //Spring注解扫描相当于context:component-scan base-packagecom.itheima/ ComponentScan(com.itheima) //设置bean扫描路径多个路径书写为字符串数组格式 //ComponentScan({com.itheima.service,com.itheima.dao}) public class SpringConfig { }【第二步】在测试类中加载配置类获取Bean对象并使用 public class AppForAnnotation {public static void main(String[] args) {//AnnotationConfigApplicationContext加载Spring配置类初始化Spring容器ApplicationContext ctx new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao (BookDao) ctx.getBean(bookDao);System.out.println(bookDao);//按类型获取beanBookService bookService ctx.getBean(BookService.class);System.out.println(bookService);} }3 注解开发Bean作用范围和生命周期管理 问题导入 在类上使用什么注解定义Bean的作用范围 3.1 bean作用范围注解配置 使用Scope定义bean作用范围 单例模式Scope(“singleton”)非单例模式Scope(“prototype”) Repository Scope(singleton) public class BookDaoImpl implements BookDao { }3.2 bean生命周期注解配置 使用PostConstruct 设置bean的初始化方法 PreDestroy 设置bean的销毁方法 Repository Scope(singleton) public class BookDaoImpl implements BookDao {public BookDaoImpl() {System.out.println(book dao constructor ...);}PostConstructpublic void init(){System.out.println(book init ...);}PreDestroypublic void destroy(){System.out.println(book destory ...);} }public class AppForAnnotation {public static void main(String[] args) {//AnnotationConfigApplicationContext加载Spring配置类初始化Spring容器AnnotationConfigApplicationContext ctx new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao1 ctx.getBean(BookDao.class);BookDao bookDao2 ctx.getBean(BookDao.class);System.out.println(bookDao1);System.out.println(bookDao2);ctx.close();注意PostConstruct和PreDestroy注解是jdk中提供的注解从jdk9开始jdk中的javax.annotation包被移除了也就是说这两个注解就用不了了可以额外导入一下依赖解决这个问题。 dependencygroupIdjavax.annotation/groupIdartifactIdjavax.annotation-api/artifactIdversion1.3.2/version /dependency4 注解开发依赖注入 问题导入 问题1请描述Autowired注解是如何进行自动装配的 问题2请描述Qualifier注解的作用 4.1 使用Autowired注解开启自动装配模式按类型 Service public class BookServiceImpl implements BookService {//Autowired注入引用类型自动装配模式默认按类型装配Autowiredprivate BookDao bookDao;public void save() {System.out.println(book service save ...);bookDao.save();} }说明不管是使用配置文件还是配置类都必须进行对应的Spring注解包扫描才可以使用。Autowired默认按照类型自动装配如果IOC容器中同类的Bean有多个那么默认按照变量名和Bean的名称匹配建议使用Qualifier注解指定要装配的bean名称 注意自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据因此无需提供setter方法。 4.2 使用Qualifier注解指定要装配的bean名称 目的解决IOC容器中同类型Bean有多个装配哪一个的问题 Service public class BookServiceImpl implements BookService {//Autowired注入引用类型自动装配模式默认按类型装配Autowired//Qualifier自动装配bean时按bean名称装配Qualifier(bookDao)private BookDao bookDao;public void save() {System.out.println(book service save ...);bookDao.save();} }注意Qualifier注解无法单独使用必须配合Autowired注解使用 4.3 使用Value实现简单类型注入 Repository(bookDao) public class BookDaoImpl implements BookDao {//Value注入简单类型无需提供set方法Value(${name})private String name;public void save() {System.out.println(book dao save ... name);} }以上Value注解中使用${name}从属性文件中读取name值那么就需要在配置类或者配置文件中加载属性文件。 Configuration ComponentScan(com.itheima) //PropertySource加载properties配置文件 PropertySource({classpath:jdbc.properties}) //{}可以省略不写 public class SpringConfig { }注意PropertySource()中加载多文件请使用数组格式配置不允许使用通配符* 5 注解开发管理第三方Bean 问题导入 导入自己定义的配置类有几种方式 【第一步】单独定义配置类 public class JdbcConfig {//Bean表示当前方法的返回值是一个bean对象添加到IOC容器中Beanpublic DataSource dataSource(){DruidDataSource ds new DruidDataSource();ds.setDriverClassName(com.mysql.cj.jdbc.Driver);ds.setUrl(mysql://localhost:3306/spring_db?characterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghairewriteBatchedStatementstrue);ds.setUsername(root);ds.setPassword(root);return ds;} }【第二步】将独立的配置类加入核心配置 方式1Import注解导入式 Configuration ComponentScan(com.itheima) //Import:导入配置信息 Import({JdbcConfig.class}) public class SpringConfig { }方式2ComponentScan扫描式 Configuration ComponentScan({com.itheima.config,com.itheima.service,com.itheima.dao}) //只要com.itheima.config包扫到了就行三个包可以合并写成com.itheima public class SpringConfig { }6 注解开发为第三方Bean注入资源 问题导入 配置类中如何注入简单类型数据如何注入引用类型数据 6.1 简单类型依赖注入 public class JdbcConfig {//1.定义一个方法获得要管理的对象Value(com.mysql.cj.jdbc.Driver)private String driver;Value(jdbc:mysql://localhost:3306/spring_db?characterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghairewriteBatchedStatementstrue)private String url;Value(root)private String userName;Value(root)private String password;//2.Bean表示当前方法的返回值是一个bean对象添加到IOC容器中Beanpublic DataSource dataSource(){DruidDataSource ds new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;} }说明如果Value()中使用了EL表达式读取properties属性文件中的内容那么就需要加载properties属性文件。 6.2 引用类型依赖注入 //Spring会自动从IOC容器中找到BookDao对象赋值给参数bookDao变量如果没有就会报错。 Bean public DataSource dataSource(BookDao bookDao){System.out.println(bookDao);DruidDataSource ds new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds; }说明引用类型注入只需要为bean定义方法设置形参即可容器会根据类型自动装配对象 7 注解开发总结 四 Spring整合其他技术 1 Spring整合mybatis 1.1 思路分析 问题导入 mybatis进行数据层操作的核心对象是谁 1.1.1 MyBatis程序核心对象分析 1.1.2 整合MyBatis 使用SqlSessionFactoryBean封装SqlSessionFactory需要的环境信息 使用MapperScannerConfigurer加载Dao接口创建代理对象保存到IOC容器中 1.2 代码实现 问题导入 问题1Spring整合mybatis的依赖叫什么 问题2Spring整合mybatis需要管理配置哪两个Bean这两个Bean作用分别是什么 【前置工作】 在pom.xml中添加spring-context、druid、mybatis、mysql-connector-java等基础依赖。准备service和dao层基础代码 public interface AccountService {void save(Account account);void delete(Integer id);void update(Account account);ListAccount findAll();Account findById(Integer id);} Service public class AccountServiceImpl implements AccountService {Autowiredprivate AccountDao accountDao;public void save(Account account) {accountDao.save(account);}public void update(Account account){accountDao.update(account);}public void delete(Integer id) {accountDao.delete(id);}public Account findById(Integer id) {return accountDao.findById(id);}public ListAccount findAll() {return accountDao.findAll();} } public interface AccountDao {Insert(insert into tbl_account(name,money)values(#{name},#{money}))void save(Account account);Delete(delete from tbl_account where id #{id} )void delete(Integer id);Update(update tbl_account set name #{name} , money #{money} where id #{id} )void update(Account account);Select(select * from tbl_account)ListAccount findAll();Select(select * from tbl_account where id #{id} )Account findById(Integer id); }【第一步】导入Spring整合Mybatis依赖 dependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.3.18/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.8/version/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.6/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.20/version/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion2.0.6/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion5.3.18/version/dependency/dependencies【第二步】创建JdbcConfig配置DataSource数据源 jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/spring_db?characterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghairewriteBatchedStatementstrue jdbc.usernameroot jdbc.passwordrootpublic class JdbcConfig {Value(${jdbc.driver})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 ds new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;} }【第三步】创建MybatisConfig整合mybatis public class MybatisConfig {//定义beanSqlSessionFactoryBean用于产生SqlSessionFactory对象Beanpublic SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){SqlSessionFactoryBean ssfb new SqlSessionFactoryBean();ssfb.setTypeAliasesPackage(com.itheima.domain);ssfb.setDataSource(dataSource);return ssfb;}//定义bean返回MapperScannerConfigurer对象Beanpublic MapperScannerConfigurer mapperScannerConfigurer(){MapperScannerConfigurer msc new MapperScannerConfigurer();msc.setBasePackage(com.itheima.dao);return msc;} }【第四步】创建SpringConfig主配置类进行包扫描和加载其他配置类 Configuration ComponentScan(com.itheima) //PropertySource加载类路径jdbc.properties文件 PropertySource(classpath:jdbc.properties) Import({JdbcConfig.class,MybatisConfig.class}) public class SpringConfig { }【第五步】定义测试类进行测试 public class App {public static void main(String[] args) {ApplicationContext ctx new AnnotationConfigApplicationContext(SpringConfig.class);AccountService accountService ctx.getBean(AccountService.class);Account ac accountService.findById(1);System.out.println(ac);} }2 Spring整合Junit单元测试 问题导入 Spring整合Junit的两个注解作用分别是什么 【第一步】导入整合的依赖坐标spring-test dependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.3.18/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion5.3.18/version/dependency!--spring整合junit--dependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactIdversion5.3.18/versionscopetest/scope/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.8/version/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.6/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.20/version/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion2.0.6/version/dependency!--junit--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13.2/versionscopetest/scope/dependency/dependencies【第二步】使用Spring整合Junit专用的类加载器 【第三步】加载配置文件或者配置类 //【第二步】使用Spring整合Junit专用的类加载器 RunWith(SpringJUnit4ClassRunner.class) //【第三步】加载配置文件或者配置类 ContextConfiguration(classes {SpringConfiguration.class}) //加载配置类 //ContextConfiguration(locations{classpath:applicationContext.xml})//加载配置文件 public class AccountServiceTest {//支持自动装配注入beanAutowiredprivate AccountService accountService;Testpublic void testFindById(){System.out.println(accountService.findById(1));}Testpublic void testFindAll(){System.out.println(accountService.findAll());} }注意junit的依赖至少要是4.12版本,可以是4.13等版本,否则出现如下异常

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建e网站wordpress在快速编辑加自定义字段

介绍 有许多种方式可以用来考虑构建应用的类型,通常类型用来描述一个特定的执行模型或者基于此的应用。举例说:控制台应用(Console Application)、Web应用(Web Application)等等。所有这些类型的应用都可以…

企业门户网站开发深圳海外医疗网站建设

实验3.4 路由器的DHCP配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施(一)配置基于接口地址池的DHCP1.交换机的基本配置2.路由器的基本配置3.开启路由器的DHCP服务器功能4.配置路由器接口的DHCP功能5.设置计算机使用DHCP方式获取IP地…

福建省龙岩市新罗区建设局网站网上商城网站建设公司

近日神州十七号载人飞船迎来发射,随着我国载人航天工程进入空间站应用与发展阶段,在轨航天探索和运维工作进入常态化阶段,然而每次出征都牵动着亿万人民的心,对航天航空的好奇和向往也越来越强烈。为了让普通人也能体验乘坐飞船上…

东营网站seo服务seo优秀网站分析

关于c语言字符串函数和一些内存函数的的简介 求字符串长度的函数 strlen函数介绍![在这里插入图片描述](https://img-blog.csdnimg.cn/20190301142458376.jpg)注模拟实现 . [1 ]计数器方式 因为strlen 是求字符串长度的函数,所以不能改变字符串本身,所…

营销最好的网站建设公司个人网站备案技巧

新版和旧版的IDEA的位置不一样,2023.2.1的版本在右上角的“” 这个位置 如图所示: 然后点击按模块分组:

在哪找人做网站素材网站整站下载

理论篇 1、简述 OSI 七层协议 2、 什么是 C/S 和 B/S 架构 ? 3、 简述 TCP 三次握⼿、四次挥⼿的流程。 4、TCP 和 UDP 的区别 ? 为何基于 tcp 协议的通信⽐基于 udp 协议的通信更可靠? 5、 什么是 socket? 简述基于 tcp 协议的套接字通信流程 6、 简述进程、线程、协…

电商平台门户网站建设的重要性wordpress拼团插件

【答疑解惑】| 作者 / Edison Zhou这是恰童鞋骚年的第267篇原创内容之前有同事问为何要用基于JWT令牌的认证架构,然后近期又有童鞋在后台留言问微服务安全认证架构的实践,因此我决定花两篇推文来解答一下。为了答好这个话题,我们先来看看微服…

类似交费网站开发增城建设网站

1. 什么是 DDoS 攻击?如何防范? 答:DDoS 攻击是指利用大量的计算机或者其他网络设备,同时向目标网络或者服务器 发送 大量的数据流量,以致其无法正常工作,从而导致网络瘫痪或者服务器宕机的攻击行 为。 …

网站全屏图片怎么做定安网站制作

文字狗最佳排版神器文字狗最佳排版神器 小恐龙公文排版助手Office WPS插件1.85最新版 无需注册、无需其他费用、无广告。相信大家所需要提交的各种论文、报告等Word文档都对格式有着非常严格的要求,对标题、目录、正文都有不同的要求。尤其是对于公文,要…

网站品牌栏目建设情况学校网站群建设必要

tolua中table.remove怎么删除表中符合条件的数据 介绍问题(错误方式删除数据)正确删除方案从后向前删除递归方式删除插入新表方式 拓展一下总结 介绍 在lua中删除表中符合条件的数据其实很简单,但是有一个顺序问题,因为lua的表中…

百度建站平台官网社交媒体平台

在使用Google的时候,查看某一相册,会经常看到,如下图所示的动画效果。 鼠标移入、移出时均有动画效果,咋一看估计是使用了css3的transform属性来实现动画效果的。 在网上搜索“Google 相册 效果”的时候发现有人使用CSS3做了这样的…

某班级网站建设方案论文网页设计素材在哪里找

参考&#xff1a;Blogs <% f.cktext_area :zh_content, ckeditor: { height: 1000} %>

网站开发+演讲vue制作WordPress主题

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

网站关键词指数查询工具自己怎么做网页链接

1 TCP/IP概述 1.1 TCP/IP的定义与起源 TCP/IP 协议&#xff0c;全称为 Transmission Control Protocol/Internet Protocol&#xff0c;中文名为传输控制协议/因特网互联协议&#xff0c;又名网络通讯协议。这是 Internet 最基本的协议&#xff0c;也是 Internet 国际互联网络…

wordpress企业建站模版适合迷茫年轻人的工作

real-time-emotion-detection 排坑记录 任务踩坑回顾CV2包版本问题症状描述解决方法 模型文件路径问题症状描述解决办法 tensorflow版本问题症状描述解决办法 其他 任务 我之前跑了一个CNN情绪识别的开源代码&#xff0c;现在我想尝试把他用到我的另一个项目里。但当时那个项目…

怎么在网站标头做图标手机做图片设计哪个软件好

c中的explicit关键字用来修饰类的构造函数&#xff0c;被修饰的类的构造函数不能进行隐式类型的转换&#xff0c;既然有"显式"那么必然就有"隐式"&#xff0c;那么什么是显示而什么又是隐式的呢&#xff1f; 如果c类的构造函数有一个参数&#xff0c;那么…

seo网站优化案例wordpress更改icon

文章目录 效果一览文章概述专栏介绍模型描述源码设计参考资料效果一览 文章概述 故障诊断模型 | Maltab实现LSTM长短期记忆神经网络故障诊断 专栏介绍 订阅【故障诊断】专栏,不定期更新机器学习和深度学习在故障诊断中的应用;订阅

有网页设计这个专业吗如何做优化排名

文章目录 Kubernetes入门学习&#xff08;上&#xff09;介绍云原生 Kubernetes架构基础概念Kubernetes架构控制平面组件Node组件 组件关系 安装Kubernetes基本对象和操作Pod&#xff08;容器集&#xff09;Deployment(部署)与ReplicaSet(副本集)Service&#xff08;服务&#…

毕业答辩ppt网站开发wordpress主题包下载

NodeJS 系列文章&#xff0c;本篇是第一篇&#xff0c;首先&#xff0c;预计将后续高频使用逻辑串一遍&#xff0c;依次是高阶函数&#xff0c;promise以及事件机制。本篇主要是高阶函数。call、bind、applycall、apply 都是改变 this 指向&#xff0c;区别是接受参数的方式不一…

潍坊网站做的好的公司电子鲜花php网站怎么做

在Facebook上进行广告运营需要一定的技巧和策略。以下是一些建议&#xff1a; 明确目标&#xff1a;在创建广告之前&#xff0c;你需要明确你的目标。这可能包括增加品牌知名度、提高网站流量、增加销售等等。明确目标后&#xff0c;你可以将广告与这些目标相结合&#xff0c;…