【Spring5学习笔记(1)】Bean管理:

Bean管理:
(1)Bean管理指的是两个操作
(2)Spring创建对象
(3)Spring注入属性

Bean管理操作有两种方式:
1、基于xml配置文件方式
(1)在Spring配置文件中,使用bean标签,标签里添加对应的属性,就可以实现对象的创建
(2)在Bean标签有许多属性:
id属性:唯一标识
class属性:创建对象所在类的全路径
name属性;
(3)创建对象时候,默认也是执行无参数构造方法完成对象创建
2、基于注解方式实现
(1)DI:依赖注入,就是注入属性
3、第一种注入方式:使用set方式进行注入
(1)创建类,定义属性和对应的set方法
(2)在Spring配置文件配置对象的创建,配置属性注入
4、第二种注入方式:使用有参数构造进行注入
(1)创建类,定义属性,创建属性对应的有参数的构造方法
(2)在Spring配置文件中进行配置
5、p名称空间注入
(1)使用p名称空间注入,可以简化基于xml配置方式
第一步:添加p名称空间在配置文件中
第二步:进行属性注入,在bean标签里操作

IOC操作Bean管理(xml注入其他类型属性)
1、字面量
(1)null值
(2)属性值包涵特殊符号
<!--属性值包涵特殊符号
1 把<>进行转义 &lt; &gt;
2 把带特殊符号的内容写到CDATA: <![CDATA[<<南京>>]]>
-->
2、注入属性-外部bean
(1)创建两个类 service类和dao类
(2)在service类调用dao类的方法
(3)在spring配置文件中进行配置
3、注入属性=内部bean和级联赋值
(1)一对多关系:部门和员工
一个部门里有多个员工,一个员工属于一个部门
部门是一,员工是多
(2)在实体类之间表示一对多的关系,员工表示所属部门,使用对象类型属性进行表示
(3)在spring配置文件中进行配置
4、注入属性-级联赋值
(1)写法一:
<property name="dept" ref="dept"></property>
(2)写法二:
<property name="dept.dname" value="技术部"></property>

IOC操作Bean管理(xml注入集合属性)
1、注入数组类型属性
2、注入List集合类型属性
3、注入Map集合类型属性
(1)创建类,定义数组、list、map、set类型数据,生成对应的set方法
(2)在Spring的配置文件中进行配置
4、在集合里面设置对象类型值
(1)创建多个对象
(2)对应标签id值
5、把集合注入部分提取出来
(1)在spring配置文件中引入名称空间util
xmlns:util="http://www.springframework.org/schema/util"
http://www.springframework.org/schema/util http://www.springframework.org/schema/beans/spring-util.xsd
(2)使用util标签完成list集合注入提取
<util:list id="booklist">
<value>水浒传</value>
<value>三国演义</value>
<value>西游记</value>
<value>红楼梦</value>
</util:list>
IOC操作Bean管理(FactoryBean)
1、spring有两种类型bean,一种是普通bean,一种是工厂bean(FactoryBean)
2、普通bean:在配置文件中定义bean类型就是返回类型
3、工厂bean:在配置文件定义bean类型可以和返回类型不一样
第一步 创建类,让这个类作为工厂bean,实现接口FactoryBean
第二步 实现接口里面的方法,在实现的方法里面定义返回的bean类型

IOC操作Bean管理(Bean作用域)
1、在spring里面,设置创建bean实例是单实例还是多实例
2、在spring里面,默认bean是单实例对象
3、如何设置单实例还是多实例
(1)在spring配置文件bean标签里有属性(scope)用于设置单实例还是多实例
(2)scope属性
第一个值 默认值singleton 表示是单实例对象
第二个值 prototype表示是多实例对象
(3) singleton和prototype 区别
第一 singleton单实例 prototype 多实例
第二 设置scope值是singleton的时候,加载spring配置文件的时候就会创建单实例对象
设置scope值是prototype的时候,不是在加载spring配置文件的时候就会创建对象,是在调用getBean方法的时候创建多实例对象
IOC操作Bean管理(Bean的生命周期)
1、生命周期
(1)从对象创建到对象销毁的过程
2、bean生命周期
(1)通过构造器创建bean的一个实例(无参数构造)
(2)为bean的属性设置对应的值 和对其他bean的引用(调用set方法)
(3)调动bean的初始化的方法(需要进行配置初始化的方法)
(4)bean可以使用了
(5)当容器关闭时,调用bean 的销毁方法(需要进行配置销毁的方法)
3、bean的生命周期
第一步 执行无参数构造创建bean实例
第二步 调用set方法设置值
第三步 执行初始化的方法
第四步 获取创建bean的实例对象
第五步 执行销毁的方法
4、bean的后置处理器,加上后bean的生命周期一共有7步
(1)通过构造器创建bean的一个实例(无参数构造)
(2)为bean的属性设置对应的值 和对其他bean的引用(调用set方法)
(3)把bean实例传递到bean后置处理器的方法 postProcessBeforeInitialization
(4)调动bean的初始化的方法(需要进行配置初始化的方法)
(5)把bean实例传递到bean后置处理器的方法 postProcessAfterInitialization
(6)bean可以使用了
(7)当容器关闭时,调用bean 的销毁方法(需要进行配置销毁的方法)

IOC操作Bean管理(XML自动装配)
1、什么是自动装配
(1)根据指定装配规则(属性名称或者属性类型),Spring将自动匹配的属性值注入
2、自动装配过程
(1)根据属性名称 autowire="byName"
(2)根据属性类型 autowire="byType"

IOC操作Bean管理(外部属性文件)
1、直接配置数据库信息
(1)配置druid连接池
(2)引入druid连接池依赖jar包
2、引入外部属性文件配置数据库连接池
(1)创建外部属性未见,properties类型文件,写数据库信息
(2)把外部properties属性文件引入到spring配置文件中进行读取
*引入context空间
* xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
* 在spring配置文件使用标签引入外部属性文件
* <context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${prop.driverClass}"></property>
<property name="url" value="${prop.url}"></property>
<property name="username" value="${prop.username}"></property>
<property name="password" value="${prop.password}"></property>
</bean>

IOC操作Bean管理(基于注解方式)
1、什么是注解
(1)注解时代码特殊标记,格式: @注解名称(属性名称=属性值,属性名称=属性值...)
(2)使用注解,注解作用在类上面,方法上面,属性上面
(3)使用注解目的:为了简化xml配置

2、Spring针对bean管理中创建对象提供注解
(1)@Component
(2)@Service
(3)@Controller
(4)@Repository
*上面的四个注解功能是一样的,都可以用来创建bean实例

3、基于注解方式实现对象的创建
第一步 引入依赖 spring-aop.jar
第二步 开启组件的扫描
开启组件扫描
1 如果扫描多个包 多个包用逗号隔开
2 扫描包上层目录 开启组件的扫描
第三步 创建类,在类上面添加创建对象注解
在注解里面value属性值可以省略不写
默认值是类名称的首字母小写
UserService -> userService
  4、开启组件扫描细节配置
<!--示例一
use-default-filters="false" 表示现在不使用默认的filter,自己配置filter
context:include-filter 设置扫描哪些内容
-->
<context:component-scan base-package="com.atguigu" use-default-filters="false">
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

<!--示例二
下面的配置扫描包所有内容
context:exclude-filter 设置哪些内容不去扫描
-->
<context:component-scan base-package="com.atguigu">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
  5、基于注解方式实现属性注入
(1)@AutoWired 根据属性类型进行自动装配
第一步 把service和dao对象创建,在service和dao类添加创建对象注解
第二步 service注入dao对象,在service类添加dao类型属性,在属性上面使用注解
@Autowired
private UserDao userDao;
(2)@Qualifier 根据属性名称进行注入
这个注解的使用,和上面的@Autowired一起使用
(3)@Resource 可以根据类型注入,也可以根据名称注入
(4)@Value 注入普通类型属性
  6、完全注解开发
(1)创建配置类(因为不用配置文件了,替代xml配置文件)
@Configuration //作为配置类,替代xml配置文件
@ComponentScan(basePackages = {"com.atguigu"}) //组件扫描
public class SpringConfig {
}
(2)编写测试类
ApplicationContext context
= new AnnotationConfigApplicationContext(SpringConfig.class); //加载配置类
 
 
posted @ 2022-08-14 17:10  快乐男孩小王  阅读(48)  评论(0编辑  收藏  举报