spring

    科技2025-10-25  27

    Spring-Ioc入门

    Spring的介绍 (1)Spring是什么? Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架 》full-stack Service Dao web 》轻量级 按需添加模块 》开源 可以获取源代码 以 IoC- (Inverse Of Control:反转控制)和 AOP- (Aspect Oriented Programming:面向切面编程) 为内核 (2)有什么特点? 提供了展现层 SpringMVC 持久层 Spring JDBC 还能整合开源世界众多著名的第三方框架和类库 业务层事务管理 AOP 方便解耦,简化开发 IOC Java源码是经典学习范例 逐渐成为使用最多的 Java EE 企业应用开源框架

    Spring架构体系 Spring架构体系 (1)Test :用于测试使用 (2)Core container:核心容器,就是用于装Java Bean对象 (3)AOP:切面编程 (4)Aspects:提供了与AspectJ的集成 (5)Data access:数据访问。用于访问操作我们的数据库。支持持久层的操作。jdbcTemplate mybatis (6)Web:用于支持数据展示层,支持http请求 (7)Transactions:用于支持事物处理。用于解决业务层的事物处理问题。 编程式事务管理和声明式事务管理. Spring的IOC理论 (1)什么是IOC 控制反转- (Inversion of Control,缩写为IoC) 》把原来new对象的这种方式转换成了,spring通过反射创建对象的方式 》spring创建完的对象放到一个容器中,谁需要就给谁注入进去- (获取对象并赋值给引用) 简单说:把创建对象和管理对象的权利交给spring Spring的IOC入门-环境搭建 (1)创建Project maven (2)创建模块module maven (3)配置依赖

    <!--spring依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.9.RELEASE</version> </dependency>

    Spring的IOC入门-代码编写 (1)定义Person类 (2)手动完成创建与赋值 (3)由spring创建与赋值 》创建容器对象 》读配置文件 new ClassPathXmlApplicationContext(“applicationContext.xml”); 》从容器中查找getBean()

    编写Test01SpringIoc测试类

    public class Test01SpringIoc { @Test public void test01(){ //1:创建ioc 容器对象 暂时看成map ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); //2:给定配置文件的名称 applicationContext.xml //3:调用容器的getBean方法获取id对应的对象 Person person = (Person) context.getBean("person"); System.out.println(person); } }

    applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 要让 spring容器给我创建一个person对象--> <!-- 配置类名,用于反向创建对象--> <!-- 同时给一个编号方便查找--> <bean id="person" class="com.wzx.domain.Person" /> </beans>

    Spring的IOC入门-问题解答 (1)方法区别

    1、context.getBean("id值", 类型.class);//无需转型 2、context.getBean("id值");//需转型

    (2)bean标签的属性 id:bean标签的识别ID,理论上可以随便写 class:你要上Spring给你创建哪个类的对象,需要写上该类的全路径名 (3)赋值方式两种(配置set和构造方法)

    Person person1 = new Person(); //设置方法 person1.setId(1); System.out.println(person1); //构造方法赋值 Person person2 = new Person(1,"jack",20,new Date()); System.out.println(person2);

    3.1、set方法配置 name:成员变量的名字 value:成员变量的值 一个property标签最后会调一个对应的set方法

    <bean id="person2" class="com.wzx.domain.Person" > <property name="id" value="10"/> <property name="name" value="rose"/> <property name="age" value="20"/> </bean>

    构造方法配置

    <!-- Person person2 = new Person(1,"jack",20,new Date());--> <!-- System.out.println(person2);--> <bean id="date1" class="java.util.Date"/> <bean id="person3" class="com.wzx.domain.Person" > <constructor-arg name="id" value="10"/> <constructor-arg name="name" value="hello"/> <constructor-arg name="age" value="20"/> <constructor-arg name="birthday" ref="date1"/> </bean>

    配置构造方法的参数的 constructor-arg 如果有四个,就表示调的一个四个参数的构造方法。 value可以赋上基本类型数据与String,但是其他对象,使用ref 表示在当前容器中查找一个已存在的对象

    Spring的IOC入门-静态工厂造对象 (1)什么是静态工厂 XxxFactory.get(); (2)通过调用静态方法获取bean对象

    public class PersonFactory { public static Person getBean() { return new Person();//静态方法返回创建的对象 } }

    (3)factory-method指定获取对象的静态工厂的方法

    <!-- Person person1 = PersonFactory.getBean();--> <bean class="com.wzx.demo02.PersonFactory" factory-method="getBean" id="person4"/>

    实例工厂造对象 (1)什么是实例工厂 XxxFactory (2)通过工厂对象调用成员方法获得bean对象 XxxFactory factory = new XxxFactory(); //实例化工厂对象 factory .yyy() //获得对象 (3)factory-bean 创建工厂对象 (4)factory-method 调用方法获得bean对象

    <!-- PersonFactory2 factory2 = new PersonFactory2(); 创建工厂--> <!-- Person person1 = factory2.getBean();调用工厂的方法--> <bean class="com.wzx.demo03.PersonFactory2" id="factory2"/> <bean factory-bean="factory2" factory-method="getBean" id="person5"/>

    Spring生命周期(了解) 1)生命周期 创建方法init 销毁方法destory 普通方法service (2)属性 init-method 当该对象初始化的时候该方法会自动执行 destroy-method 当该对象即将销毁的时候会自动调用该方法 (3)测试 context.close()关闭容器

    Spring依赖注入DI-set方法 DI (dependency injection) 依赖注入 含义:就是给对象的属性设置值. 就是给对象的属性设置值 set方法给对象设置值 构造方法给对象初始化的时候设置值. (2)property标签 set方式设置属性(掌握) 让spring调set方法,前提条件类中必须有set方法

    name : 代表的是set方法去掉set,首字母小写setName Name name value: 基本类型或字符串类型的值,具体给属性设置用的 ref (引用) : 引用对象的id,作为一个对象类型注入

    Spring依赖注入-给复杂类型注入 (1)什么是复杂类型? 简单的是基本类型与字符串 Aarry 数组 List 集合 Map集合 Set集合 Properties集合 (2)如何给这些属性设置值 使用对应的子标签 array,list,map,set,props

    //集合类型属于复杂类型 private String[] arr; //女朋友们 public void setArr(String[] arr) { this.arr = arr; } public String[] getArr() { return arr; } //List private List<String> list;//前女朋友们 public void setList(List<String> list) { this.list = list; } //set private Set<String> set;//前女朋友们 public void setSet(Set<String> set) { this.set = set; } //map private Map<String,String> map;//前女朋友们 public void setMap(Map<String, String> map) { this.map = map; } //properties private Properties properties;//前女朋友们 public void setProperties(Properties properties) { this.properties = properties; } <bean id="person7" class="com.wzx.domain.Person"> <property name="name" value="jack"/> <property name="arr"> <array> <value >rose</value> <value >rose</value> <value >rose</value> </array> </property> <property name="list"> <list> <value >rose1</value> <value >rose2</value> <value >rose3</value> </list> </property> <property name="set"> <set> <value >rose</value> <value >rose</value> <value >rose3</value> </set> </property> <property name="map"> <map> <entry key="10010" value="rose1"/> <entry key="10086" value="rose2"/> <entry key="110" value="rose3"/> </map> </property> <property name="properties"> <props> <prop key="10010">rose1</prop> <prop key="10086">rose2</prop> <prop key="110">rose3</prop> </props> </property> </bean>
    Processed: 0.011, SQL: 8