20160121--Spring
package com.hanqi;
public class HelloWorld {
public HelloWorld()
{
}
public HelloWorld(String name)
{
this.name = name;
}
private User user;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
System.out.println("设置name = " + name);
this.name = name;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public void sayHello()
{
System.out.println("Hello " + name + " " + user);
}
}
HelloWorld.java
package com.hanqi; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { //调用
public static void main(String[] args) { /*
//初始化
HelloWorld hw = new HelloWorld(); hw.setName("Java"); hw.sayHello();
*/
//构建容器
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); //从容器中获取实例 控制反转IOC
HelloWorld hw = (HelloWorld)ac.getBean("helloWorld"); //调用实例的方法
hw.sayHello(); } }
Main.java
<?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"> <bean id="helloWorld" class="com.hanqi.HelloWorld">
<!-- 依赖注入DI -->
<property name="name" value="Spring"></property>
<property name="user" ref="user1"></property> </bean> <bean id="user" class="com.hanqi.User">
<property name="name" value="小强"></property>
</bean> <bean id="user1" class="com.hanqi.User"><!-- User中的 name、age、sex 一一对应 -->
<constructor-arg value="小明" type="String"></constructor-arg> <!-- 用 index="顺序号" 进行匹配 -->
<constructor-arg value="12" type="int"></constructor-arg> <!-- type="数据类型" 根据数据类型来进行匹配 -->
<constructor-arg value="男" type="String"></constructor-arg>
<!-- <constructor-arg value="小明" index="0"></constructor-arg> 用 index="顺序号" 进行匹配 -->
</bean> </beans>
applicationContext.xml
package com.hanqi;
public class User {
public User()
{
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
public User(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
private String name;
private int age;
private String sex;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
User.java

20160121--Spring的更多相关文章
- 基于spring注解AOP的异常处理
一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...
- 玩转spring boot——快速开始
开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...
- Spring基于AOP的事务管理
Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...
- [Spring]IoC容器之进击的注解
先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...
- 学习AOP之透过Spring的Ioc理解Advisor
花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...
- 学习AOP之深入一点Spring Aop
上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...
- 学习AOP之认识一下Spring AOP
心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- Spring之旅(2)
Spring简化Java的下一个理念:基于切面的声明式编程 3.应用切面 依赖注入的目的是让相互协作的组件保持松散耦合:而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件. AOP面向切面 ...
- Spring之旅
Java使得以模块化构建复杂应用系统成为可能,它为Applet而来,但为组件化而留. Spring是一个开源的框架,最早由Rod Johnson创建.Spring是为了解决企业级应用开发的复杂性而创建 ...
随机推荐
- 【二进制拆分多重背包】【HDU1059】【Dividing】
Dividing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- T-SQL触发器
触发器 对表进行增删改操作时,自动执行的一个操作.当操作一个表的同时,需要进行其它关联操作的时候,就可以用到触发器. 比如:下订单时,创建中的商品数量需要减少 比如:退票时,总的票量要增加 属于DDL ...
- UVA 1374 Power Calculus
题意: 给出m,问对n最少进行几次操作.n初始为1,能得到m.操作1位将n平方.操作2为将n除以之前出现的n值中的任意一个. 分析: 其实是关于指数的操作,即从1到m最少的步数.我们可以先确定最少步数 ...
- L9-3.安装PHP软件包
安装扩展工具包: 查看是否安装成功: 做软连接: 安装libxml 先安装python: 做软连接: 同样安装 libmcrypt和mhash make && make install ...
- (转)在.net中序列化读写xml方法的总结
阅读目录 开始 最简单的使用XML的方法 类型定义与XML结构的映射 使用 XmlElement 使用 XmlAttribute 使用 InnerText 重命名节点名称 列表和数组的序列化 列表和数 ...
- 内存泄漏工具VLD1.0_要点分析
0X01 关闭FPO优化 // Frame pointer omission (FPO) optimization should be turned off for this // entire fi ...
- HDU 1232(畅通工程)题解
以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定一具有N个节点的图和其边集,求其集合数量. [题目分析] 并查集经典题...其实就是创建好并查集就行了.. [算法流程] 于 ...
- 算法竞赛中G++编译器的编译指令简单说明
算法竞赛使用的在线判题平台在FAQ会给出提交的代码是通过什么指令进行编译的.比如hustoj给出的c++编译指令通常是: C++: g++ Main.cc -o Main -fno-asm -O2 - ...
- VC++客户端 缩小包的尺寸
图片压缩: 1. 背景图片尺寸一般为100-300KB,使用纯色图片可缩小至1-3KB,方法得当可缩小1M多: 2. .ico一般为100-200KB,16x16一直到256x256,可减去其中几种尺 ...
- python学习笔记:python数字
一.数字类型分类 数字提供了标量存储和直接访问,它是不可更改类型,也就是说变更数字的值会产生新的对象.python的对象模型与常规对象模型有些不同,对数字对象的更新,实际上是生成了一个新的数值对象,并 ...