Spring基础2
一、Spring属性注入
1)构造方法属性注入
2)set方法属性注入:通过在bean对象所属类中提供相应字段的set方法,并在配置文件中配置<property.....>
- <bean id="UserDao" class="com.ual.demo1.UserDaoOracleImpl" ><!--id对应接口名,class对应接口的具体实现类-->
- <!--
- name:要注入的属性值,实现类中要有该值的set方法
- value:注入值(赋值)
- -->
- <property name="name" value="ual"></property>
- </bean>
3)set方法设置对象类型的属性(引用类型属性注入):类里的引用类型也需要交给Spring来管理
- package com.ual.demo3;
- //Student类,里面包含引用类型dog
- public class Student {
- private String name;
- private Integer age;
- public Dog dog;
- public Student(String name, Integer age) {
- this.name = name;
- this.age = age;
- }
- public void setLw(Dog lw) {
- this.dog = lw;
- }
- }
- package com.ual.demo3;
- //引用类型dog类
- public class Dog {
- public String name;
- public void setName(String name) {
- this.name = name;
- }
- }
4)p名称空间的属性注入
使用p命名空间,就不需要写那么多的property,使用时要添加名称空间。
xmlns:p="http://www.springframework.org/schema/p"
5)EL表达式属性注入
vlaue里写上EL表达式的值
#{‘字符串’} #{数字} #{参数} value="#{dog.name}"
6)集合类属性注入
1.数组:
- public String[] attr;
- public void setAttr(String[] attr) {
- this.attr = attr;
- }
- <property name="attr">
- <list>
- <value>zx</value>
- <value>ls</value>
- <value>ww</value>
- </list>
- </property>
2. List
- public List<Integer> mylist;
- public void setMylist(List<Integer> mylist) {
- this.mylist = mylist;
- }
- <property name="mylist">
- <list>
- <value>11</value>
- <value>22</value>
- </list>
- </property>
3.set
- public Set mySet;
- public void setMySet(Set mySet) {
- this.mySet = mySet;
- }
- <property name="mySet">
- <set>
- <value>123</value>
- <value>23</value>
- </set>
- </property>
4.Map
- public Map myMap;
- public void setMyMap(Map myMap) {
- this.myMap = myMap;
- }
- <property name="myMap">
- <map>
- <entry key="1" value="1"></entry>
- <entry key="2" value="3"></entry>
- </map>
- </property></bean>
二、IOC注解方式快速入门
1)配置
1.在Spring4之后,想要使用注解形式,必须要引入aop包。
2.在配置文件中,还要引入一个context约束。
3.配置组件扫描:哪个包下的类型使用组合扫描。指定包后,该包下的类可以使用 注解。
- <!--指定注解的扫描包,后面写上包名-->
- <context:component-scan base-package="com.ual.demo"></context:component-scan>
4.在类上添加注解,确定将哪些类交给Spring
同时,要在设置中允许注解b-c-a
5.使用注解注入属性
1.可以不提供set方法,直接在直接名上添加@value("值")
2.如果提供set方法,在set方法上添加@value("值")
四、IOC注解详解
1).@Component:修改一个类,将这个类交给Spring来管理,相对于在配置文件中配置<bean id="" class="">
2).@Component三个衍生注解:为了更好的进行分层,Spring可以使用其他三个注解,功能类似,目前使用哪一个功能都一样。后期可能回添加属于各自的属性。
1.@Controller:web层
2.@Service:service层
3.@Repository:dao层
这三个和Component一样的功能。
3).属性注入
1.@Value:设置普通属性值
2.@Autowired:设置对象类型的属性值,直接使用这种方式,是按照类型完全属性注入,不需要再注解上使用id名称,习惯是按照名称完成属性注入。(根据bean对象中定义的引用类型类型名,找到交给Spring 的类中有无对应类)
3.但是习惯是按照名称进行注入的,可以用@Autowired与@Qualifier("dog")
4.3中可以不用两个结合,就用@Resource(name="dog")根据名称注入
5.PostConstrut:初始化方法
6.PreDestory:销毁方法 5,6在bean中自己创建的方法上调用
7.scope:作用范围,在类上调用
XML与注解比较:XML可以适用于任何场景,结构清晰,维护方便,注解不是自己提供的类使用不了,开发简单。
XML与注解结合,XML管理Bean,注解完成属性注入,使用过程中,可以不用扫描包,扫描是为了类上的注解,在没有扫描的情况下,属性注入使用注解
使用@Resource@Value@Autowired@Qulifier
五、应用
1.xml形式
2.注解形式
Spring基础2的更多相关文章
- Spring基础知识
Spring基础知识 利用spring完成松耦合 接口 public interface IOutputGenerator { public void generateOutput(); } 实现类 ...
- spring基础整理
spring基础教程:https://www.tutorialspoint.com/spring/spring_overview.htm 注入实例 <bean id="" c ...
- Spring 基础知识
Spring架构简单描述 原文:https://www.shiyanlou.com/courses/document/212 Spring 概述 1. Spring 是什么 Spring是一个开源的轻 ...
- Spring基础配置
从毕业到现在我一直从事Android开发,但是对JavaEE一直念念不忘,毕业校招的时候,一个礼拜拿了三个offer,岗位分别是Android.JavaEE和JavaSE,后来觉得Android比较简 ...
- Spring基础系列--AOP织入逻辑跟踪
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9619910.html 其实在之前的源码解读里面,关于织入的部分并没有说清楚,那些前置.后 ...
- 第65节:Java后端的学习之Spring基础
Java后端的学习之Spring基础 如果要学习spring,那么什么是框架,spring又是什么呢?学习spring中的ioc和bean,以及aop,IOC,Bean,AOP,(配置,注解,api) ...
- Spring基础系列-AOP源码分析
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9560803.html 一.概述 Spring的两大特性:IOC和AOP. AOP是面向切 ...
- Spring基础系列-Spring事务不生效的问题与循环依赖问题
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9476550.html 一.提出问题 不知道你是否遇到过这样的情况,在ssm框架中开发we ...
- Spring Boot实战(1) Spring基础
1. Spring基础配置 Spring框架本身有四大原则: 1) 使用POJO进行轻量级和最小侵入式开发 2) 通过依赖注入和基于接口编程实现松耦合 3) 通过AOP和默认习惯进行声明式编程 4) ...
- spring基础学习01
spring基础 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用 IOC控制反转 把创建对象和维护对象之间的关系权利 ...
随机推荐
- django 通过邮箱和用户名都能登录
一. 在settings.py 文件中的#Application definition 下增加代码: AUTHENTICATION_BACKENDS=( 'users.views.CustomBack ...
- (最小生成树 Prim) nyoj1403-沟通无限校园网
题目描述: 校园网是为学校师生提供资源共享.信息交流和协同工作的计算机网络.校园网是一个宽带.具有交互功能和专业性很强的局域网络.如果一所学校包括多个学院及部门,也可以形成多个局域网络,并通过有线或无 ...
- qml: 自定义滚动条;
注: 该博文为原创博文,转载请注明,摘用请随意: qml自带的滚动条不太好用: 首先,利用canvas绘制滚动条两端的箭头: import QtQuick 2.0 Canvas { width: 2 ...
- webpack打包内存溢出的解决方法
由于项目文件越来越多,最终导致在打包时报javaScript heap out of memory错误 解决方案: 1.增加v8内存 使用increase-memory-limit 1)安装 npm ...
- nGrinder Loadrunner vs nGrinder
s d 功能 参数类型 取值方式 迭代方式 Loadrunner实现方式 nGrinder实现方式 参数化 文件 sequential (顺序取值) Each Iteration (每次迭代) 在参 ...
- 如何用MTR诊断网络问题
MTR 是一个强大的网络诊断工具,管理员能够用它诊断和隔离网络错误,并向上游提供商提供有关网络状态的有用报告.MTR 通过更大的采样来跟踪路由,就像 traceroute + ping 命令的组合.本 ...
- python dom操作
1.DOM介绍 (1)什么是DOM DOM:文档对象模型.DOM 为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构.目的其实就是为了能让js操作html元素而制定的一个规范. DOM就是由节 ...
- 利用css3给座右铭设置漂亮的渐变色
.footer-container .footer-content p .motto { font-weight: bolder; -webkit-background-clip: text; -we ...
- linux查看IP
1:输入 ifconfig,出现如下信息,找到eno16777736(网卡ip信息的配置文件名) 2:输入 cd /etc/sysconfig/network-scripts 找到网卡ip信息的配置文 ...
- MySQL的随笔
数据库引擎 MySQL5.0支持的存储引擎包括MyISAM,InnoDB.MEMORY.MERGE.BDB等等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表. MyISAM M ...