spring-ioc知识点

1.bean管理
-spring创建对象
-在spring的配置文件中,使用bean标签、标签里添加对应的属性、就可以实现对象的创建
-在bean标签中有很多属性
-id属性:唯一的标识
-class属性:类全路径(包类的路径)
-创建对象的时候:默认无参
-spring注入属性
2.基于xml方式注入属性:
-DI;依赖注入:就是注入属性。
-使用set方法进行注入
<!--set注入属性 -->
<bean id="book" class="com.spring5.book">
<property name="bName" value="狂人日记">
<!-- property - name 注入的属性名字 value-注入的值 -->
</property>
<property name="bAuthor" value="鲁迅" >

</property>
</bean>
-使用有参构造器进行注入
-
<bean id="order" class="com.spring5.Order">
<constructor-arg name="oName" value="电脑"></constructor-arg>
<constructor-arg name="oAddress" value="China"></constructor-arg>
</bean>
-
注入属性
1.注入属性:外部
-创建两个类《service》 《dao》
-在service中调用dao
<bean id="userService" class="com.spring5.service.UserService">
<property name="userDAO" ref="userDAO"></property>
</bean>
<bean id="userDAO" class="com.spring5.dao.UserDAOImpl"></bean>
2.注入属性:内部bean和级联复制
1.1对n的关系:部门和员工 一个部门有多个院,一个员工属于一个部门
<bean id="emp" class="com.spring5.bean.Emp">
<property name="eName" value="Jerry"/>
<property name="gender" value="女"/>
<property name="dept" >
<bean id="dept" class="com.spring5.bean.Dept">
<property name="dName" value="保安部"/>
</bean>
</property>
</bean>
注入集合属性
-set list map
<bean id="stu" class="com.spring5.bean2.Stu">
<property name="courses" >
<array>
<value>java课程</value>
<value>数据库课程</value>
</array>
</property>
<property name="list">
<array>
<value>张珊</value>
<value>萧山</value>
</array>
</property>
<property name="map">
<map>
<entry key="Java" value="java"></entry>
</map>
</property>
<property name="set">
<set>
<value>MYsql</value>
<value>redis</value>
</set>
</property>
<property name="coursesList">
<list>
<ref bean="coures1"/>
<ref bean="coures2"/>
</list>
</property>
</bean>
<!-- 注入list集合 但是 list<counrs> 里面是对象-->
<bean id="coures1" class="com.spring5.bean2.course">
<property name="cName" value="Spring5框架"/>
</bean>
<bean id="coures2" class="com.spring5.bean2.course">
<property name="cName" value="MyBatis框架"/>
</bean>
6.bean的作用域
-单实例
output:
com.spring5.book@10163d6
com.spring5.book@10163d6
class = com.spring.作用域.Test
-如何设置单实例还是多实例
-在spring配置文件的bean标签中有属性(scope)用于设置单实例还是多实例
-scope属性值:
-默认值:singleton 表示是单实例对象
-prototype 表示是多实例对象
-output: 多实例化
com.spring5.book@31e5415e
com.spring5.book@a2431d0
-request session
7.bean的生命周期(servlet的生命周期类比)
-从对象创建到对象销毁的过程
-bean的生命周期:
-1.通过构造器创造bean的实例(无参构造器)
-2.为bean的属性设置或者其他的bean的引用(set方法)
-3.调用bean中的init方法 (需要进行设置)
-4.bean可以使用了
-5.当容器关闭的时候,调用bean的销毁方法
-3.演示bean的生命周期
8.自动装配
-什么是自动装配?
-1.根据指定的装备规则,spring自动将匹配的属性值进行注入
-byName
-byType
9.ioc-bean管理 外部属性文件
-1.直接配置数据库的信息
-连接池:druid连接池
-2.引入外部的属性文件配置数据库的连接池
<!-- 数据库的外部属性文件的引入配置数据库操作-->
<context:property-placeholder location="jdbc.properties"/>
<bean id="druid" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${prop.driverClassName}"/>
<property name="url" value="${prop.url}"/>
<property name="username" value="${prop.username}"/>
<property name="password" value="${prop.password}"/>

</bean>
class:spring-day02-src-bean1.xml

ioc操作bean管理-注解
-1.什么是注解
-2.注解为了简化xml的配置
2.
-bean管理的注解(针对创建对象的提供的注解)
-1.component
-2.service
-3.controller
-4.repository
3.
-第一步引入依赖
-开启组件扫描
-开启组件扫描的细节:
<!-- 示例1
use-default-filters="false" 表示不再使用默认的filter 自己配置filter
context:include-filter 配置需要扫描的注解格式
-->
<context:component-scan base-package="com.service" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!-- 示例2
context:exclude-filte表示配置不扫描某个类型的注解
-->
<context:component-scan base-package="com.service">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>

4.注解进行属性注入
-autowired 根据属性类型进行自动装配
-qualifier 根据属性名称进行注入
-resource 根据类型进行注入 =也可以根据名称注入
-value 注入普通类型属性
posted @ 2022-03-20 13:41  wiselee/  阅读(64)  评论(0编辑  收藏  举报