一、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的更多相关文章

  1. Spring基础知识

    Spring基础知识 利用spring完成松耦合 接口 public interface IOutputGenerator { public void generateOutput(); } 实现类 ...

  2. spring基础整理

    spring基础教程:https://www.tutorialspoint.com/spring/spring_overview.htm 注入实例 <bean id="" c ...

  3. Spring 基础知识

    Spring架构简单描述 原文:https://www.shiyanlou.com/courses/document/212 Spring 概述 1. Spring 是什么 Spring是一个开源的轻 ...

  4. Spring基础配置

    从毕业到现在我一直从事Android开发,但是对JavaEE一直念念不忘,毕业校招的时候,一个礼拜拿了三个offer,岗位分别是Android.JavaEE和JavaSE,后来觉得Android比较简 ...

  5. Spring基础系列--AOP织入逻辑跟踪

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9619910.html 其实在之前的源码解读里面,关于织入的部分并没有说清楚,那些前置.后 ...

  6. 第65节:Java后端的学习之Spring基础

    Java后端的学习之Spring基础 如果要学习spring,那么什么是框架,spring又是什么呢?学习spring中的ioc和bean,以及aop,IOC,Bean,AOP,(配置,注解,api) ...

  7. Spring基础系列-AOP源码分析

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9560803.html 一.概述 Spring的两大特性:IOC和AOP. AOP是面向切 ...

  8. Spring基础系列-Spring事务不生效的问题与循环依赖问题

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9476550.html 一.提出问题 不知道你是否遇到过这样的情况,在ssm框架中开发we ...

  9. Spring Boot实战(1) Spring基础

    1. Spring基础配置 Spring框架本身有四大原则: 1) 使用POJO进行轻量级和最小侵入式开发 2) 通过依赖注入和基于接口编程实现松耦合 3) 通过AOP和默认习惯进行声明式编程 4) ...

  10. spring基础学习01

    spring基础 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用 IOC控制反转 把创建对象和维护对象之间的关系权利 ...

随机推荐

  1. Mysql DML DCL DDL

    在介绍这些SQL语言之前,先罗列一下mysql的常用数据类型和数据类型修饰,供查询参考 后面的带数字表示此类型的字段长度 数值型: TINYINT 1 ,SMALLINT 2,MEDIUMINT 3 ...

  2. 原生js实现each方法

    首先我们了解一下什么是callback函数 CALLBACK,即回调函数,是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就 ...

  3. pycharm 出现 "PEP:8 expected 2 blank lines ,found 0"

    https://blog.csdn.net/modangtian/article/details/79687623 这句话的意思是“有两个空白行,但是没有发现.” 在声明函数的那一行的上方必须有两行的 ...

  4. C++基础知识-Day5

    今天主要讲的是类的扩展 1.类成员函数的存储方式 首先我们介绍类成员函数的存储方式,C++引入面向对象的概念之后,C语言中的一些比如static/const等原有语义,作一些升级,此时既要保持兼容,还 ...

  5. Codeforces Round #523 (Div. 2) C Multiplicity (DP)

    传送门 https://www.cnblogs.com/violet-acmer/p/10005351.html 题意: 给定一数组a[],从a[ ]中除去任意个元素得到b[ ],求能形成多少“好序列 ...

  6. Luogu P2743 [USACO5.1]乐曲主题Musical Themes

    链接 \(Click\) \(Here\) 人生第一道后缀数组的题目.首先要对输入的串进行差分处理,差分后长度为(\(n - 1\))的相同子段就是原串中长度为\(n\)的相同(可变调)子段.求出来\ ...

  7. bzoj2243 树链剖分

    https://www.lydsy.com/JudgeOnline/problem.php?id=2243 新学的树剖,在维护的时候线段树维护区间内颜色数量以及左右两端的颜色.统计的时候区间合并时判断 ...

  8. jenkins 基本配置

    修改jenkins使用用户和启动端口 //yum 安装 cat /etc/sysconfig/jenkins 安装完后安装maven插件 设置jenkins项目存放目录 系统管理---->系统设 ...

  9. Unity-使用面向对象的思想

    在做游戏之初,老师曾经说过要用面向对象的思想去做.当时满口答应,应为学了一点C#的原因感觉面向对象很简单嘛,但是事实上在做游戏的过程中,为了赶进度我的代码写的很冗余,很乱.这就导致了我不得不重新修改. ...

  10. C#设计模式(5)——建造者模式

    1.建造者模式介绍 在软件开发中,有时我们要创建一个复杂的对象,这个对象由几个子部件按一定的步骤组合而成,这时候我们就可以使用建造者模式了.说到建造者我们首先想到的是盖房子,盖房子简单的说有三个步骤: ...