spring 中 Ioc 的 pom 依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.23</version>
</dependency>
Ioc(控制反转):它是一种思想,由容器集中进行对象的创建和依赖管理。
基于xml
方式一: setter注入
<bean id = "school" class="com.zjh.demo.s01.School">
<property name="name" value="北京大学"></property>
<property name="address" value="地球村"></property>
</bean>
方式二: 构造方法注入
- 使用参数名称赋值
<bean id="stu1" class="com.zjh.demo.s02.Student">
<constructor-arg name="address" value="22"></constructor-arg>
<constructor-arg name="name" value="李四"></constructor-arg>
<constructor-arg name="school" ref="school1"></constructor-arg>
</bean>
- 使用参数的下标位置赋值
<bean id="stu2" class="com.zjh.demo.s02.Student">
<constructor-arg index="0" value="22"></constructor-arg>
<constructor-arg index="1" value="李四"></constructor-arg>
<constructor-arg index="2" ref="school1"></constructor-arg>
</bean>
- 按照参数的顺序赋值
<bean id = "stu3" class="com.zjh.demo.s02.Student">
<constructor-arg value="25"></constructor-arg>
<constructor-arg value="王五"></constructor-arg>
<constructor-arg ref="school1"></constructor-arg>
</bean>
方式三: 自动注入
byName: 按照成员变量的名称,在Spring容器中找到相同id的对象,自动进行注入
byType: 按照成员变量的类型,在Spring容器中找到同源的对象,自动进行注入
<bean id = "stu" class="com.zjh.demo.s01.Student" autowire="byName">
<property name="name" value="张三"></property>
<property name="id" value="23"></property>
<property name="school" ref="school"></property>
</bean>
注意: 一种类型只能有一个对象,多于一个对象时,注入报错
基于注解
扫描组件
<context:component-scan base-package="com.zjh.demo"/>
对象的注解
@Component: 可以对所有对象进行创建
@Repository: 用于数据访问层对象的创建
@Service: 用于业务逻辑层对象的创建
@Controller: 用于控制层对象的创建
@RestController(@Controller+@ResponseBody): 构建RESTful风格的Web服务
@Autowired/@Resource(非spring的注解): 赋值的注解
配置文件的拆分
文件名: applicationContext_mapper.xml
<bean id = "mapper" class="com.zjh.demo.mapper.UserMapperImp"></bean>
文件名: applicationContext_service.xml
<bean id = "service" class="com.zjh.demo.service.UserServiceImp">
<property name="userMapper" ref="mapper"></property>
</bean>
文件名: applicationContext_controller.xml
<bean id = "controller" class="com.zjh.demo.controller.UserController">
<property name="userService" ref="service"></property>
</bean>
文件名: total.xml
<import resource="applicationContext_*.xml"></import>
@Transactional注解的参数详解
@Transactional(
noRollbackForClassName = “ArithmeticException”, //发生指定的异常不回滚,使用异常的名称
noRollbackFor ={ArithmeticException.class} , //发生指定的异常不回滚,使用异常的类型
rollbackForClassName = “NullPointerException” , //发生指定的异常必须回滚,使用异常的名称
rollbackFor = NullPointerException.class, //发生指定的异常必须回滚,使用异常的类型
readOnly = false, //在查询时必须设置为true(只读),默认是false
)