园林景观 网站建设,营销型网站建设风格设定包括哪些方面,wordpress主题机制,南宁网站定制团队前言
本篇在spring中如何使用五大类注释与方法注释将对象加入IOC容器中#xff0c;了解如何使用注释来获取容器中的Bean对象#xff0c;如有错误#xff0c;请在评论区指正#xff0c;让我们一起交流#xff0c;共同进步#xff01; 文章目录 前言1.通过注释将类加入IoC…
前言
本篇在spring中如何使用五大类注释与方法注释将对象加入IOC容器中了解如何使用注释来获取容器中的Bean对象如有错误请在评论区指正让我们一起交流共同进步 文章目录 前言1.通过注释将类加入IoC容器中Maven项目创建前提准备添加注释 - 储存Bean对象1.类注释存储springjava中的标准分层 - 写程序时根据这些分层2.方法注释存储Bean对象 2. 获取Bean对象 / 对象装配属性注入构造方法注入Setter注入 总结 本文开始 1.通过注释将类加入IoC容器中
Maven项目创建前提准备
1.查看是否添加依赖成功 2.配置扫描路径自定义 位置处于自己创建的.xml文件中路径内容只需要修改自己创建的路径即可 配置完路径会扫描路径下的类有注释的加入容器中 添加注释 - 储存Bean对象
1.类注释存储spring
类注释的目的看到类注释就能了解当前类的用途 aController控制器存储校验参数合法性 bService服务存储业务组装方法组装看调用什么方法不进行业务的实现- 告诉你办理什么业务 cRepository仓库存储数据持久层进行实际业务的处理 - 实际去办一个个业务 dComponent组件存储工具类层通用的工具 eConfiguration配置存储配置层对项目进行设置
使用 - 在所创建的类上添加对应注释即可 【注】
Bean的命名规则(获取加注解的默认id)对于第一个字母大写第二个字母小写默认id使用小写 - 符合规则前两个字母小写StudentUser studentUser 不满足首字母大写 第二个字母小写使用原来id - 非默认情况id为原类名不变THead THead
Bean的命名规则源码 存储Bean可以使用注解存储也可以使用xml,存储Bean二者也可以混用类不在同一个包里可以使用Bean的方式存储
java中的标准分层 - 写程序时根据这些分层 2.方法注释存储Bean对象
【注】 1.Bean注释加在方法上的 2.Bean注释必须配合五大类注释一起使用
为什么需要与五大类注释配合使用呢 方法太多寻找一个方法可能会扫描包下的所有方法相比较来说类比较少通过类找方法会快很多
Bean与五大类配合使用代码示例 推荐使用Component 3.获取Bean命名方式Bean的默认命名 方法名id 方法名
但是这样命名有弊端如果方法名为getxxx(), setxxx(), 这样调用这个对象是不恰当的所以就需要给方法重新命名再获取Bean对象就是根据重命名来获取
重命名Bean方式给Bean添加属性设置名称 aBean(“abc”) : 没写属性直接命名 bBean(name “bb”) : 写属性name并设置命名 cBean(value “cc”) 写属性value并命名 【注】 ① 命名可以指定多个命名 : Bean(name {“aa”, “bb”}) ② 对Bean重命名后就不能使用原来的方法名来获取对象 ③ 对于类注释不支持起多个命名相当于不能给一个类取多个命名 ④ 对于Bean名称如果多个Bean使用相同的名称程序不报错在同一个类中除第一个Bean之后的对象不会被存放到容器中再有相同名称的Bean存储时容器自动忽略不存储
如果使用Bean重命名命名名称一样就需要根据加载顺序来确定通过Order() 来声明一个类的加载时机Order() 中括号中的值越大就先加载通过那个类 Order(100) Order(1) ; 2. 获取Bean对象 / 对象装配
获取对象 / 对象注入取出一个对象放到某个类中
获取对象的注释Autowired 或者 Resource
Resource注入 作用类似 Autowired 二者区别 1.Resource 来自 jdk Autowired 来自Spring框架 2.支持参数个数不同Resource 支持多参数设置Autowired 只支持一个参数设置 3.使用方式不同Resource 不支持构造方法注入Autowired 支持构造方法注入 4.idea兼容性支持不同Resource 不存在报错情况Autowired 在专业版情况下可能报错解决报错方法Autowired(required false) 给括号中设置false值表明此时对象不存在也可以
属性注入
属性注入属于通过注释从容器中获取对象注入到设置的变量中在之后的方法中就能使用
优点属性注入使用简单 缺点无法注入 final 修饰的对象 通用性 - 只适用于 IoC容器 【注】被final修饰的变量需要直接复制 或者 在构造方法中进行赋值 问题同一类型Bean存储到容器多个获取Bean时出现错误 解决方式 a) 将属性的名字 和 Bean的名字对应上 b) 使用Autowried Qualifier()进行筛选 c) 使用Resource 设置name名称指定获取某个对象 构造方法注入
构造方法注入使用在构造方法上添加Autowired, 从容器中获取UserRepository对象注入到对应属性中
优点可以注入一个final修饰的对象 注入的对象不会被修改构造方法 只会加载一次 构造方法注入可以保证 对象完全初始化 构造方法通用性更好 缺点 写法复杂 使用构造方法注入无法解决循环依赖的问题
Service
public class User4 {private UserRepository userRepository;
//在构造方法上添加AutowiredAutowiredpublic User4(UserRepository userRepository) {this.userRepository userRepository;}
}Setter注入
setter注入使用在setter方法上加上Autowired, 在执行对应类时会从容器中拿到对象并注入到setter中的参数
优点符合单一设计原则 - Setter只有set一个属性 缺点无法注入final修饰的变量 setter注入的对象可以被修改setter本身可能被多次调用修改
Service
public class User3 {private UserRepository userRepository;//Autowired注释setter就会从容器中获取对应对象再注入到对应参数UserRepository属性中Autowiredpublic void setUserRepository(UserRepository userRepository) {this.userRepository userRepository;}
}总结
✨✨✨各位读友本篇分享到内容如果对你有帮助给个赞鼓励一下吧 感谢每一位一起走到这的伙伴我们可以一起交流进步一起加油吧