Spring IOC注入方式

本文详细介绍了Spring的IOC注入,包括手动注入的set方法、构造器、扩展方式和工厂方法,以及自动注入的@Resource和@Autowired注解的使用,强调了注解的查找策略和应用场景。

一、Spring IOC注入分类

1、手动注入

  • set方法
  • 构造器
  • 扩展方式注入
  • 静态工厂
  • 实例化工厂

2、自动注入

  • @Resource注解
  • @AutoWired注解

二、Spring IOC注入详解

1、手动注入

Spring IOC手动注入分为四类,其中第1种set方法注入和第2种构造器注入的方法在我们的日常编程中比较常用.大家可以重点关注一下.
本次通过service层调用dao层的方法来展示
UserDao.class

public class UserDao {
    public void test(){
        System.out.println("dao....");
    }
}
  1. set方法
public class UserService {
    // 业务对象UserDao set注入(提供set方法)
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    public void test(){
        userDao.test();
    }
 }
 .xml
     <bean id="userDao" class="com.shsxt.dao.UserDao"/>
     <bean id="userService" class="com.shsxt.service.UserService">
        <!--业务对象 注入-->
        <property name="userDao" ref="userDao"/>
     <bean>
  1. 构造器
public class UserService {
    private UserDao userDao;
    public UserService(UserDao userDao02) {
        this.userDao = userDao;
    }
 }
 .xml
 	 <bean id="userDao" class="com.shsxt.dao.UserDao"/>
     <bean id="userService" class="com.shsxt.service.UserService">
        <constructor-arg name="userDao" ref="userDao"></constructor-arg>
     <bean>

扩展方式注入
我们可以使用p命名空间和c命名空间进行注入
p命名空间无参构造函数、c命名空间有参构造函数

public class UserService {
    private UserDao userDao;
    public UserService() {}
    public UserService(UserDao userDao02) {
        this.userDao = userDao;
    }
 }

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:c="http://www.springframework.org/schema/c"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean name="p-userService" class="com.shsxt.service.UserService"
        p:userDao="userDao"/>
    <bean name="p-userService" class="com.shsxt.service.UserService"
        c:userDao="userDao"/>
</beans>
  1. 静态工厂
定义工厂类
public class StaticFactory {
    // 定义静态方法
    public static TeacherService createTeacherService() {
        return new TeacherService();
    }
}
.xml
<!--静态工厂注入-->
   <bean id="teacherService" class="com.shsxt.factory.StaticFactory" factory-method="createTeacherService"></bean>
  1. 实例化工厂
定义工厂类
public class InstanceFactory {
    public TeacherService createService() {
        return new TeacherService();
    }
}
.xml
 <!--实例化工厂注入-->
<bean id="instanceFactory" class="com.shsxt.factory.InstanceFactory"></bean>
<bean id="teacherService" factory-bean="instanceFactory" factory-method="createService"></bean>

2、自动注入

准备工作 配置环境xx.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       https://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">
       
	   <!--开启自动化装配(注入)-->
	   <context:annotation-config/>
@Resource注解
private UserDao ud;
@Resource
public void setUd(UserDao ud) {
    this.ud = ud;
}

1、默认根据属性字段名称查找对应的bean对象 (属性字段的名称与bean标签的id属性值相等)
2、如果属性字段名称未找到,则会通过类型(Class类型)查找
3、属性可以提供set方法,也可以不提供set方法
4、注解可以声明在属性级别 或 set方法级别
5、@Resource可以设置name属性,name属性值必须与bean的id属性值一致;如果设置了name属性值,就只会按照name属性值查找bean对象
6、当注入接口时,如果接口只有一个实现则正常实例化;如果接口存在多个实现,则需要使用name属性指定需要被实例化的bean对象

@Autowired注解
@Autowired
@Qualifier(value = "accountDao")
private AccountDao accountDao;

public void setAccountDao(AccountDao accountDao) {
    this.accountDao = accountDao;
}

1、默认通过类型(Class类型)查找bean对象 与属性字段的名称无关
2、属性可以提供set方法,也可以不提供set方法
3、注解可以声明在属性级别 或 set方法级别
4、可以添加@Qualifier结合使用,通过value属性值查找beam对象(value属性值必须要设置,且值要与bwan标签的id属性值对应)

这是一个视频文件分类工具,可以根据视频分辨率或方向(横屏/竖屏)对MP4文件进行批量分类。程序已经添加了开始按钮,使用更加直观方便。## 功能特点- **批量处理**:支持批量分类多个MP4文件- **多种分类方式**: - 按分辨率分类(720p以下、720p、1080p、4K、其他分辨率) - 按方向分类(横屏、竖屏、正方形)- **直观界面**:带有开始按钮和进度显示- **实时日志**:显示分类过程和结果## 如何运行程序### 方法一:运行Python脚本(推荐)1. 确保您的电脑已安装Python 3.6或更高版本2. 确保`ffprobe.exe`文件与`视频分辨率分类器.py`在同一目录下3. 双击运行`视频分辨率分类器.py`文件4. 或者在命令行中执行: ``` python 视频分辨率分类器.py ```### 方法二:使用可执行文件您也可以使用目录中的`.exe`文件,但请注意这些可能是旧版本。推荐使用Python脚本以获取最佳体验和最新功能。## 使用步骤1. **选择源文件夹**:点击"浏览"按钮选择包含MP4文件的文件夹2. **选择目标文件夹**:点击"浏览"按钮选择分类后文件保存的位置3. **选择分类方法**: - 选择"按分辨率分类"或"按方向分类(横屏/竖屏)"4. **开始分类**:点击"开始分类"按钮开始处理5. **查看进度**:通过进度条和日志区域查看分类进度6. **停止处理**:如有需要,可点击"停止"按钮中断处理## 注意事项- 程序需要`ffprobe.exe`来分析视频文件的分辨率信息- 确保源文件夹中包含MP4格式的视频文件- 目标文件夹需要有写入权限- 大文件处理可能需要一些时间,请耐心等待- 分类完成后,文
PHP云人才管理系统,专业的人才招聘网站系统开源程序,采用 PHP 和 MySQL 数据库构建的高效的人才与企业求职招招聘系统源码。强大的地图搜索功能,猎头等,让传统人才招聘网站源码脱胎换骨,焕然一新。PHPYUN人才招聘系统 V4.6 Beta 更新日志:新增:**(WAP)端界面UI全新升级新增:引入MUI框架,最大限度贴合原生APP操作体验新增:简历多个意向地区新增:后绑定**、邮箱直接登录新增:企业会员新增消费模式(套餐消费)新增:套餐续费、新购自定义累加、覆盖功能新增:企业套餐等增值服务引导新增:投递简历查看企业**方式限制新增:自定义简历搜索权限新增:后台数据清理功能新增:店铺招聘增加收费发布功能新增:**端(WAP)根据IP自动跳转分站新增:充值积分优惠折扣功能新增:注册**号重复解绑功能新增:注册企业名称重复提醒功能新增:职位上架,检查会员是否过期新增:充值卡生成后能导出功能新增:微信菜单增加小程序菜单新增:UC整合,增加默认邮箱新增:计划任务默认只刷新30天内简历、职位新增:百度分享本地化(支持HTTPS)新增:**版测评功能模块新增:企业**合并申请修复:**扫码上传拍照功能修复:后台财务统计功能修复:天眼查营业执照注册日期不能正常显示修复:wap站会员中心微信绑定修复:企业下载高级简历财务数据修复:测评数据存储异常修复:企业关注问题修复:**端公告不显示修复:后台单页面添加返回问题修复:**端登录极验证识别问题修复:静态页下相关新闻链接不正常修复:企业模板职位列表分页错误修复:发布**地图问题修复:地图模糊搜索不准确修复:简历工作经历平均时长低于1个月不显示修复:PC端企业横幅上传无积分修复:后台职位审核未刷新修复:**动态码登录 验证码不显示
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值