Spring
2023-11-11 16:03:18 0 举报
AI智能生成
JavaSpring笔记
作者其他创作
大纲/内容
Spring组成
Spring /Spring AOP / Spring ORM / Spring DAO
Spring Context / Spring Web / Spring Web MVC
Spring Context / Spring Web / Spring Web MVC
第一个Spring程序实现
1.导入maven依赖
Spring依赖导入及介绍
**spring-beans**:由 Spring IoC 容器负责创建、管理所有的Java对象
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.3.22</version>
</dependency>
- **spring-core**:Spring core是用来负责发现、创建并处理bean之间的关系的一个工具包。core把bean的创建、bean的互相注入的方法定义完毕,上层服务只需要进行调用;提供功能但不调用就是spring core的存在意义。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.22</version>
</dependency>
- **spring-context**:创建上下文并将BeanPostProcessor加载到spring
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.22</version>
</dependency>
- **spring-expression**:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.3.22</version>
</dependency>
- **commons-logging**:日志
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
2.创建对象所需要的类
3.创建Spring的配置文件,在配置文件中创建对象
在resources根路径下New一个Xmlconfiguration File下的Spring config的xml文件命名为application.xml
<bean id="user" class="com.fjc.entity.User"></bean> id为创建的对象名 class为
3333333对哪个类创建对象
4.创建测试类 测试是否可以生成对象
@Test
public void testCreateObj(){
//加载Spring配置文件
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
//获取配置文件中创建的对象
User user = (User) applicationContext.getBean("user");
//加载对象中的方法
user.addUser();
}
spring默认情况下创建的bean是单例的,言外之意这个对象是公用的,会产生线程安全问题
多例需要在bean标签加入scope="prototype", <bean xxx scope="prototype"/>
Bean作用域(单例&多例)
scope属性:设置Spring创建出来的bean是但是单实例对象还是多实例对象
---->默认:singleton(单例) ---->phototype(多例)
Singleton和Prototype的区别:
1)Singleton是单例,Prototype是多例
2)设置scope是singleton的时候,加载Spring配置文件就会创建单实例对象
3)设置为Protype的时候,不是加载Spring配置文件的时候创建对象,而是调用getBean的时候创建多实例对象
Spring介绍
Spring提供了强大的IOC(控制反转,把创建对象的过程交给Spring进行管理)
AOP(面向切面,面向方面编程)
和Web Mvc等功能
Spring特点
1. 方便解耦/简化开发
2. AOP编程支持
3. 声明式事务的支持
4. 方便程序的调试
5. 方便继承各种优秀框架
6. 降低了Java EE API的使用难度
XML注入属性及其他类型
<!-- 配置User类对象的创建 -->
<bean id="user" class="com.fjc.entity.User"/>
<!--有参构造注入依赖-->
<bean id="user1" class="com.fjc.entity.User">
<!--constructor-arg 是有参构造为对象赋值使用的标签-->
<!-- name是属性 value是复制的内容-->
<constructor-arg name="uname" value="名字"/>
<constructor-arg name="upassword" value="密码"/>
</bean>
<!--set方式赋值-->
<bean id="user2" class="com.fjc.entity.User">
<!--set赋值使用的是property标签-->
<property name="uname" value="set名"/>
<property name="upassword" value="set注入pass"/>
</bean>
<!--外部bean级联赋值操作-->
<bean id="emp" class="com.fjc.entity.Emp">
<property name="ename" value="大哥"/>
<property name="egender" value="女"/>
<property name="dept" ref="dept"/>
<property name="dept.dname" value="开发"/>
</bean>
<!--XML注入其他类型-->
<!--集合类型导入-->
<bean id="stu" class="com.fjc.entity.Stu">
<!--数组类型属性注入-->
<property name="course">
<array>
<value>JAVA</value>
<value>PHP</value>
</array>
</property>
<property name="list">
<list>
<value>大哥</value>
<value>二哥</value>
</list>
</property>
<property name="map">
<map>
<entry key="java" value="JAVA"/>
<entry key="php" value="PHP"/>
</map>
</property>
<property name="courseList">
<list>
<ref bean="spring"/>
<ref bean="mybatis"/>
</list>
</property>
</bean>
<!--注入集合类属性(对象类型)-->
<bean id="spring" class="com.fjc.entity.Course">
<property name="cname" value="Spring框架"/>
</bean>
<bean id="mybatis" class="com.fjc.entity.Course">
<property name="cname" value="Mybatis框架"/>
</bean>
<!--注入集合类型属性(抽取为公共部分)-->
<!--步骤一在Spring配置文件中引入名称空间util-->
<!--xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">-->
<!--步骤二使用util标签完成list集合注入提取-->
<util:list id="bookList">
<value>从入门到放弃</value>
<value>活着</value>
<value>呐喊</value>
</util:list>
<bean id="book" class="com.fjc.entity.Book">
<property name="list" ref="bookList"/>
<property name="authorList" ref="aunthorList"/>
</bean>
<util:list id="aunthorList">
<ref bean="author1"/>
<ref bean="author2"/>
</util:list>
<bean id="author1" class="com.fjc.entity.Author">
<property name="aname" value="author1"/>
</bean>
<bean id="author2" class="com.fjc.entity.Author">
<property name="aname" value="author2"/>
</bean>
</beans>
工厂bean
在Spring配置文件中定义的bean类型和返回类型可以不一致
步骤一:创建类,作为工厂Bean,实现接口FactoryBean
步骤二:实现接口中的方法,在实现的方法中定义返回bean的类型
步骤三:验证(错误信息),提示信息说明类型不匹配。
步骤四:完善程序
Course course = applicationContext.getBean("myBean", Course.class);
System.out.println(course);
Bean生命周期
通过构造器创建bean实例(无参构造)
为bean的属性设置值和对其他bean引用(调用set方法)
调用bean的初始化方法(初始化方法需要我们自己配置)
bean可以使用了(对象获取到了)
当容器关闭的时候,调用bean的销毁方法(销毁的方法也是需要我们自定义)
0 条评论
下一页