wordpress免费会员中心品牌seo推广
- 作者: 多梦笔记
- 时间: 2026年02月18日 23:36
当前位置: 首页 > news >正文
wordpress免费会员中心,品牌seo推广,太原企业网站制作,seo优化网站网页教学文章目录 基于 XML 配置方式组件管理前置 准备项目一、 组件#xff08;Bean#xff09;信息声明配置#xff08;IoC#xff09;#xff1a;1.1 基于无参构造1.2 基于静态 工厂方法实例化1.3 基于非静态 工厂方法实例化 二、 组件#xff08;Bean#xff09;依赖注入配置… 文章目录 基于 XML 配置方式组件管理前置 准备项目一、 组件Bean信息声明配置IoC1.1 基于无参构造1.2 基于静态 工厂方法实例化1.3 基于非静态 工厂方法实例化 二、 组件Bean依赖注入配置DI1. 1 基于构造函数的依赖注入单个构造参数1.2 基于构造函数的依赖注入多构造参数解析* 1.3 基于Setter方法依赖注入 三、 IoC容器创建和使用1. 1 容器实例化1.2 Bean对象读取 四、 高级特性: 组件Bean作用域和周期方法配置1. 1 组件周期1.2 组件作用域 五、 高级特性FactoryBean特性和使用1. 1 FactoryBean简介1.2 FactoryBean应用1.3 FactoryBean和BeanFactory区别 六、基于XML方式整合三层架构组件1.1 需求分析1.2 项目准备1.3 配置文件1.4 测试 数据库 增删改查1.5 三层结构 搭建 开始 总结XMLIoC方式问题总结 : 基于 XML 配置方式组件管理 前置 准备项目 创建项目工程导入springioc依赖 父模块 导入子都需要的依赖子模块继承 pom.xml dependencies!–spring context依赖–!–当你引入Spring Context依赖之后表示将Spring的基础依赖引入了–dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion6.0.6/version/dependency!–junit5测试–dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-api/artifactIdversion5.3.1/version/dependency/dependencies一、 组件Bean信息声明配置IoC 1.1 基于无参构造 创建无参构造 类创建spring配置文件配置文件中 创建bean - bean标签通过配置bean标签告诉IOC容器需要创建对象的组件信息
- id属性bean的唯一标识,方便后期获取Bean
- class属性组件类的全限定符
- 注意要求当前组件类必须包含无参数构造函数1.2 基于静态 工厂方法实例化 factory-method: 指定静态工厂方法注意该方法必须是static方法。 1.3 基于非静态 工厂方法实例化 !– 将工厂类进行ioc配置 –bean idnotStaticMethod classcom.doug.ClientService/bean!– 根据工厂对象的实例工厂方法进行实例化组件对象 –bean idclientService factory-beannotStaticMethod factory-methodcreateInstance/beanfactory-bean属性指定当前容器中工厂Bean 的名称。factory-method: 指定实例工厂方法名。注意实例方法必须是非static的 二、 组件Bean依赖注入配置DI
- 1 基于构造函数的依赖注入单个构造参数 1.2 基于构造函数的依赖注入多构造参数解析 - constructor-arg标签指定构造参数和对应的值
- constructor-arg标签name属性指定参数名、index属性指定参数角标、value属性指定普通属性值* 1.3 基于Setter方法依赖注入 property标签 可以给setter方法对应的属性赋值property 标签 name属性代表set方法标识、ref代表引用bean的标识id、value属性代表基本属性值 name 本质是去找方法set方法去掉set的
三、 IoC容器创建和使用
- 1 容器实例化
读取配置文件实例化Bean对象
// 方法一
//参数String…locations 传入一个或者多个配置文件
ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring-bean-01.xml,spring-bean-02.xml);//方法二// 先实例化再指定配置文件最后刷新容器触发Bean实例化
ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext();
//设置配置配置文件,方法参数为可变参数,可以设置一个或者多个配置
context.setConfigLocations(spring-bean-01.xml,spring-bean-02.xml);
//后配置的文件,需要调用refresh方法,触发刷新配置
context.refresh();1.2 Bean对象读取
//方式1: 根据id获取
//没有指定类型,返回为Object,需要类型转化!
HappyComponent happyComponent (HappyComponent) applicationContext.getBean(bean的id标识);//使用组件对象
happyComponent.doWork();//方式2: 根据类型获取 //根据类型获取,但是要求,同类型(当前类,或者之类,或者接口的实现类)只能有一个对象交给IoC容器管理 //配置两个或者以上出现: org.springframework.beans.factory.NoUniqueBeanDefinitionException 问题 HappyComponent happyComponent applicationContext.getBean(HappyComponent.class); happyComponent.doWork();//方式3: 根据id和类型获取 ! // getBean(bean的id标识,class) HelloComponent helloComponent applicationContext.getBean(helloComponent, HelloComponent.class); helloComponent.doWork(); 根据类型来获取bean时在满足bean唯一性的前提下其实只是看 『对象 instanceof 指定的类型』的返回结果 只要返回的是true就可以认定为和类型匹配能够获取到。根据类型获取同一个类型在IoC容器中只能有一个bean存在多个同类型bean 会报错 见上代码IOC的配置一定是实现类但可以根据接口类型获取值。 interfaceA happyComponent applicationContext.getBean(interfaceA.class); happyComponent.doWork();根据实现类的父接口 调用它实现类的方法
四、 高级特性: 组件Bean作用域和周期方法配置 - 1 组件周期
IoC容器实例化和销毁组件对象 周期方法声明 周期方法配置bean
bean idbeanPeriod classcom.doug.BeanPeriod init-methodInit destroy-methoddestroy/测试 ClassPathXmlApplicationContext applicationContext new ClassPathXmlApplicationContext(spring-bean-01.xml);// 正常关闭 没调用这个方法就只执行初始化然后直接寄非正常死亡applicationContext.close();1.2 组件作用域 默认就是单例模式 多例模式组件对象 getBean 一次就会创建一个组件对象 五、 高级特性FactoryBean特性和使用 - 1 FactoryBean简介 BeanFactory IoC容器最大的接口 IoC容器FactoryBean 标准化组件工厂的接口 组件 FactoryBean用于配置复杂的Bean对象可以将创建过程存储在FactoryBean 的getObject方法 FactoryBeanT 接口提供三种方法 T getObject(): 返回此工厂创建的对象的实例。该返回值会被存储到IoC容器 boolean isSingleton(): 如果此 FactoryBean 返回单例则返回 true 否则返回 false 。此方法的默认实现返回 true 注意lombok插件使用可能影响效果。 Class? getObjectType(): 返回 getObject() 方法返回的对象类型如果事先不知道类型则返回 null 。 1.2 FactoryBean应用 FactoryBean使用场景 代理类的创建第三方框架整合复杂对象实例化等 准备FactoryBean的实现类 配置FactoryBean实现类 !–id - getObject方法返回的对象标识class - factoryBean标准化工厂类–bean idjavaBean classcom.doug.ioc02.JavaBeanFactoryBeanproperty namevalue value道格维克//bean测试
1.3 FactoryBean和BeanFactory区别 FactoryBean 是 Spring 中一种特殊的 bean可以在 getObject() 工厂方法自定义的逻辑创建Bean是一种能够生产其他 Bean 的 BeanFactoryBean 在容器启动时被创建而在实际使用时则是通过调用 getObject() 方法来得到其所生产的 BeanFactoryBean 可以自定义任何所需的初始化逻辑生产出一些定制化的 bean一般情况下整合第三方框架都是通过定义FactoryBean实现 BeanFactory Spring 框架的基础其作为一个顶级接口定义了容器的基本行为 例如管理 bean 的生命周期、配置文件的加载和解析、bean 的装配和依赖注入等 BeanFactory 接口提供了访问 bean 的方式 总的来说 , FactoryBean 和 BeanFactory 的区别 : 主要在于FactoryBean 是用于创建 bean 的接口它提供了更加灵活的初始化定制功能而 BeanFactory是用于管理 bean 的框架基础接口提供了基本的容器功能和 bean 生命周期管理。 六、基于XML方式整合三层架构组件 1.1 需求分析 搭建一个三层架构案例模拟查询全部学生学生表信息持久层使用JdbcTemplate和Druid技术使用XML方式进行组件管理
1.2 项目准备 数据库
create database studb;use studb;CREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,gender VARCHAR(10) NOT NULL,age INT,class VARCHAR(50) );INSERT INTO students (id, name, gender, age, class) VALUES(1, 张三, 男, 20, 高中一班),(2, 李四, 男, 19, 高中二班),(3, 王五, 女, 18, 高中一班),(4, 赵六, 女, 20, 高中三班),(5, 刘七, 男, 19, 高中二班),(6, 陈八, 女, 18, 高中一班),(7, 杨九, 男, 20, 高中三班),(8, 吴十, 男, 19, 高中二班);项目创建 spring-ioc-xml-practice-02依赖导入 dependencies!–spring context依赖–!–当你引入SpringContext依赖之后表示将Spring的基础依赖引入了–dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion6.0.6/version/dependency!– 数据库驱动和连接池–dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.25/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.8/version/dependency!– spring-jdbc –dependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion6.0.6/version/dependency/dependencies 实体类准备 package com.doug.ioc;public class Student {private Integer id;private String name;private String gender;private Integer age;private String classes;public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender gender;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public String getClasses() {return classes;}public void setClasses(String classes) {this.classes classes;}Overridepublic String toString() {return Student{ id id , name name \ , gender gender \ , age age , classes classes \ };} }1.3 配置文件 从JAVA写法 改成 bean创建对象
1.4 测试 数据库 增删改查 Testpublic void testForIoC(){// 1. 创建IOC容器ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring-ioc01.xml);// 2. 获取jdbc组件JdbcTemplate jdbcTemplate applicationContext.getBean(JdbcTemplate.class);// 3. 进行数据库的crud操作// 3.1 插入 删除 修改 DML updateString sql insert into students(name,gender,age,class) values(?,?,?,?);/** 参数一sql语句* 参数二 传入占位符?的值 按顺序* 返回值int 影响行数* */int rows jdbcTemplate.update(sql, 道格, 男, 25, 十年十班);System.out.println(rows);// 3.2 查询单条信息// 按照 ID 查询一条学生信息 返回实体对象sql select * from students where id ?;/** 参数一sql语句* 参数二RowMapper 列名和属性名的映射器接口* 参数三Object…param 占位符 这里是id数字* 返回值 rowMapper指定的对象 结果返回实体类* */Student queryStudent jdbcTemplate.queryForObject(sql, (rs, rowNum) - {// 返回的结果集对象// rs 结果集// rowNum 行数// rs 结果集中获取列的值 赋值给实体类对象即可Student student new Student();student.setId(rs.getInt(id));student.setName(rs.getString(name));student.setGender(rs.getString(gender));student.setAge(rs.getInt(age));student.setClasses(rs.getString(class));return student;}, 1);System.out.println(queryStudent);// 3.3 查询所有学生的信息sql select id,name,gender,age,class as classes from students;// BeanPropertyRowMapper 帮助我们自动映射列和属性值要求列名和属性名一致不一致需要起别名ListStudent studentList jdbcTemplate.query(sql, new BeanPropertyRowMapperStudent(Student.class));System.out.println(studentList);结果
1.5 三层结构 搭建 开始 dao service controller xml 配置文件 context:property-placeholder locationclasspath:jdbc.properties/bean iddruidDataSource classcom.alibaba.druid.pool.DruidDataSourceproperty nameurl value\({doug.url}/property namedriverClassName value\){doug.driver}/property nameusername value\({doug.username}/property namepassword value\){doug.password}//beanbean idjdbcTemplate classorg.springframework.jdbc.core.JdbcTemplateproperty namedataSource refdruidDataSource//beanbean idstuDao classcom.doug.dao.impl.StuDaoImplproperty namejdbcTemplate refjdbcTemplate//beanbean idstuService classcom.doug.service.impl.StuServiceImplproperty namestuDao refstuDao//beanbean idstuController classcom.doug.controller.StuControllerproperty namestuService refstuService//bean测试 Testpublic void testStuControllerMethod(){ClassPathXmlApplicationContext applicationContext new ClassPathXmlApplicationContext(spring-02.xml);StuController stuController applicationContext.getBean(StuController.class);stuController.findAllStu();}总结 lambada
XMLIoC方式问题总结 : 注入的属性必须添加setter方法、代码结构乱配置文件和Java代码分离、编写不是很方便XML配置文件解析效率低
- 上一篇: wordpress门户网站高端网球拍
- 下一篇: wordpress免费网站国外泰安人才网公司
相关文章
-
wordpress门户网站高端网球拍
wordpress门户网站高端网球拍
- 站长
- 2026年02月18日
-
wordpress美丽说模板织梦和wordpress哪个seo好
wordpress美丽说模板织梦和wordpress哪个seo好
- 站长
- 2026年02月18日
-
wordpress没了seo网络推广公司排名
wordpress没了seo网络推广公司排名
- 站长
- 2026年02月18日
-
wordpress免费网站国外泰安人才网公司
wordpress免费网站国外泰安人才网公司
- 站长
- 2026年02月18日
-
wordpress模板 门户网站网站建设与运营的论文的范本
wordpress模板 门户网站网站建设与运营的论文的范本
- 站长
- 2026年02月18日
-
wordpress模板安装教程伊春网站优化
wordpress模板安装教程伊春网站优化
- 站长
- 2026年02月18日
