小记---------spring框架之IOC理解
- WEB 层:Spring MVC.(M:model(dao ,service entity) , v :view (html,jsp),c controller(controller))
- 业务层:Bean 管理:(IOC)
- 持久层:Spring 的 JDBC 模板.ORM 模板用于整合其他的持久层框架.(mybatis)
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/beans/spring-beans.xsd" > <!--p命名空间约束的位置-->
<!--属性注入-->
<!-- 因id的值不能出现特殊字符,所以使用name -->
<!-- 如果同时写两个bean标签 需要添加scope属性'多例prototype' -->
<!--需要有参构造器-->
<bean name="ud" scope="prototype" class="cn.yzq.dao.impl.UserDaoImpl">
<constructor-arg name="name" value="小米"></constructor-arg> <!--name的值是属性(字段)、value是具体传的值-->
<constructor-arg name="age" value=""></constructor-arg>
</bean>
<!-- 使用set赋值,需要无参构造器和set访问方式 -->
<bean name="ud2" scope="prototype" class="cn.yzq.dao.impl.UserDaoImpl">
<property name="name" value="华为"></property> <!--name的值是属性(字段)、value是具体传的值-->
<property name="age" value=""></property>
</bean>
<!-- 对象类型注入 -->
<!-- 首先需要用bean标签创建出一个对象 -->
<bean name="ud3" scope="prototype" class="cn.yzq.dao.impl.UserDaoImpl">
<property name="name" value="iphone"></property>
<property name="age" value=""></property
<!-- 需要创建一个被关联的实体 -->
<property name="car" ref="car"></property> <!-- name的值是属性名(字段名) ref值是要关联的实体 -->
</bean>
<!-- 被管理的实体创建 -->
<bean name="car" class="cn.yzq.dao.impl.Car"></bean> <!-- p命名空间的属性注入 -->
<!-- 基本数据类型 格式 p:属性名="属性的值" -->
<!-- 对象数据类型格式 p:属性名(对象)-ref="关联的实体" -->
<bean name="ud4" class="cn.yzq.dao.impl.UserDaoImpl" p:name="红米" p:age="" p:car-ref="car"></bean> <!-- 复杂类型的注入 -->
<bean name="ud5" scope="prototype" class="cn.yzq.dao.impl.UserDaoImpl">
<!-- name值是属性名 -->
<!--数组注入-->
<property name="nums">
<list>
<value></value>
<value></value>
<value></value>
</list>
</property>
<!--list集合注入-->
<!-- name值是属性名 -->
<property name="lists">
<list>
<value>a</value>
<value>b</value>
<value>c</value>
</list>
</property>
</bean>
<bean name="ud6" scope="prototype" class="cn.yzq.dao.impl.UserDaoImpl">
<!-- 注入 Map 集合 -->
<property name="map">
<map>
<entry key="aaa" value="" />
<entry key="bbb" value="" />
<entry key="ccc" value="" />
</map>
</property> <!-- Properties 的注入 -->
<!--用于给配置文件赋值和取值-->
<property name="properties">
<props>
<prop key="username">root</prop>
<prop key="password"></prop>
</props>
</property>
</bean> </beans>
@Test
public void demo2() {
// 创建 Spring 的工厂类:
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("applicationContext.xml");
// 通过工厂解析 XML 获取 Bean 的实例.
UserDao userDao = (UserDao) applicationContext.getBean("ud2"); //需要与核心配置文件中的id 或 name 相对应
userDao.sayHello();
}
|
ClassPathXmlApplicationContext
|
:加载类路径下 Spring 的配置文件.
|
|
FileSystemXmlApplicationContext
|
:加载本地磁盘下 Spring 的配置文件.
|
|
* singleton
|
:默认值,单例的.
|
|
* prototype
|
:多例的.
|
|
* request
|
:WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中.
|
|
* session
|
:WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中.
|
- globalSession :WEB 项目中,应用在 Porlet 环境.如果没有 Porlet 环境那么 globalSession 相当
- session.
<bean name="ud" init-method="show" scope="prototype" class="cn.yzq.dao.impl.UserDaoImpl">
<constructor-arg name="name" value="小米"></constructor-arg>
<constructor-arg name="age" value=""></constructor-arg>
</bean>
<!--show是实现类中的一个方法 ,在执行下面代码之前先执行show方法-->
<!--destroy-method使用方法一致-->
小记---------spring框架之IOC理解的更多相关文章
- Spring框架之IOC(控制反转)
[TOC] 第一章Spring框架简介 IOC(控制反转)和AOP(面向方面编程)作为Spring框架的两个核心,很好地实现了解耦合.所以,简单来说,Spring是一个轻量级的控制反转(IoC)和面向 ...
- Spring框架中IoC(控制反转)的原理(转)
原文链接:Spring框架中IoC(控制反转)的原理 一.IoC的基础知识以及原理: 1.IoC理论的背景:在采用面向对象方法设计的软件系统中,底层实现都是由N个对象组成的,所有的对象通过彼此的合作, ...
- Spring框架(3)---IOC装配Bean(注解方式)
IOC装配Bean(注解方式) 上面一遍文章讲了通过xml来装配Bean,那么这篇来讲注解方式来讲装配Bean对象 注解方式需要在原先的基础上重新配置环境: (1)Component标签举例 1:导入 ...
- Spring框架的IOC核心功能快速入门
2. 步骤一:下载Spring框架的开发包 * 官网:http://spring.io/ * 下载地址:http://repo.springsource.org/libs-release-local/ ...
- (精简)Spring框架的IoC(替代工厂类实现方法)和AOP(定义规则,约定大于配置)
Spring的核心框架主要包含两个技术,分别用来处理工厂类,以及事务处理和连接管理的. 两大核心概念 1) IoC:控制反转,在现在的开发中,如果想建立对象并设置属性,是需要先new对象,再通过se ...
- 初识Spring框架实现IOC和DI(依赖注入)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的, IoC是 ...
- Spring框架之IoC和AOP
Spring框架简介: 2003年2月,Spring框架正式成为一个开源项目,并发布于SourceForge中.致力于Java EE应用的各种解决方案,而并不是仅仅专注于某一层的方案,是企业应用开发的 ...
- Spring框架的IOC(控制反转)
1.1.IoC是什么 Ioc-Inversion of Control,即"控制反转",不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制, ...
- Spring框架(2)---IOC装配Bean(xml配置方式)
IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...
随机推荐
- LA 4223 最短路 路径选择要求提高一点
F - Trucking Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Statu ...
- Codeforces 1167 E Range Deleting 双指针+思维
题意 给一个数列\(a\),定义\(f(l,r)\)为删除\(a\)中所有满足\(l<=a_i<=r\)的数后的数列,问有多少对\((l,r)\),使\(f(l,r)\)是一个 ...
- BOM基础笔记
BOM基础 BOM对浏览器的一些操作 1.打开.关闭窗口 •open –蓝色理想运行代码功能 window.open('http://www.baidu.com/', '_self'); <!d ...
- ERROR: virtualenvwrapper could not find virtualenv in your path
环境: Ubuntu 18.04 Python3 使用pip3安装virtualenv和virtualenvwrapper两个包,ubuntu18.04中,用户使用pip安装的包在~/.local/下 ...
- Partial Dependence Plot
Partial Dependence就是用来解释某个特征和目标值y的关系的,一般是通过画出Partial Dependence Plot(PDP)来体现. PDP是依赖于模型本身的,所以我们需要先训练 ...
- C++入门经典-例9.2-重载函数模板,求出字符串的最小值
1:整形数和实型数编译器可以直接进行比较,所以使用函数模板后也可以直接进行比较,但如果是字符指针指向的字符串该如何处理呢?这时可以通过重载函数模板来实现.通常字符串需要库函数来进行比较,通过重载函数模 ...
- spring-jms,spring-boot-starter-activemq JmsTemplate 发送方式
spring-jms,spring-boot-starter-activemq JmsTemplate 发送方式 背景: 原来我准备是setDefaultDestinationName 设置队列的名称 ...
- 安装vncserver, vncviewer--远程桌面
1 问题如下 /etc/sysconfig/vncservers---配置文件作用去掉最后两行的注释 no route to host 是防火墙的原因---必须得研究好防火墙 本地可以vnc,本地 ...
- koa 项目实战(一)创建项目
1.安装模块 npm install koa koa-router --save npm install -g nodemon 2.入口文件 app.js const Koa = require('k ...
- win10 c++程序打包
步骤如下: 1. 先动态编译连链接,生成exe: 2. 找到exe依赖的dll文件 使用Process Explore来获取所依赖的dll文件 打开procexp.exe,通过菜单View–Lower ...