Spring是当今最流行的框架,今天开始,dayday同学要正式开始学习Spring了,加油

以下是一个简单的应用Spring框架的java程序

src\dayday\HelloSpring.java

package dayday;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class HelloSpring {
private String name;
public void setName(String name){
this.name=name;
}
public void println(){
System.out.println("hello "+name+" ,study Spring hard!!!");
}
}

src\dayday\Main.java

package dayday;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class Main {
public static void main(String[] args){
//获得Spring容器
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
// 获得一个bean,spring中所有的java类都为bean
HelloSpring hellospring=ctx.getBean("hellospring",HelloSpring.class);
//调用类中的方法
hellospring.println();
// 原来不用spring框架的时候,将得到同样的运行结果
HelloSpring hellospring=new HelloSpring();
helloSpring.setName("dayday");
hellospring.println();
} }

src\beans.xml

<?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为创建bean(类)的名字
//name中的值(String)会相应的调用类中setString()的方法,value表示对应属性的值,也可以是ref,ref中是另外一个bean
<bean id="hellospring" class="dayday.HelloSpring">
<property name="name" value="dayday"/>
</bean>
//另外一种方式,通过p标签进行配置,如果要通过p标签配置的话,bean中不能含有有参构造函数
    <!--通过p标签进行配置-->
<bean name="hellospring" class="dayday.HelloSpring" p:name="dayday" p:book-ref="book"/>
<bean name="book" class="dayday.Book" p:bookname="《Spring MVC》"/>
</beans>

运行结果
hello dayday ,study Spring hard!!! <property>中使用ref
src\dayday\HelloSpring.java
package dayday;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class HelloSpring {
private Book book;
private String name;
public void setName(String name){
this.name=name;
}
public void setBook(Book book){
this.book=book;
}
public void println(){
System.out.println("hello "+name+" ,study Spring hard!!!"+book.print());
} public static void main(String[] args){
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
HelloSpring hellospring=ctx.getBean("hellospring",HelloSpring.class);
hellospring.println();
} }
src\dayday\Book.java
package dayday;

/**
* Created by I am master on 2016/11/28.
*/
public class Book {
private String bookname;
public void setBookname(String bookname){
this.bookname=bookname;
}
public String print(){
return "read "+bookname;
}
}
src\dayday\Main.java
package dayday;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class Main {
public static void main(String[] args){
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
HelloSpring hellospring=ctx.getBean("hellospring",HelloSpring.class);
hellospring.println();
} }
src\dayday\beans.xml
<?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="hellospring" class="dayday.HelloSpring">
<property name="name" value="dayday"/>
<property name="book" ref="book"></property>
</bean>
<bean id="book" class="dayday.Book">
<property name="bookname" value="《Spring mvc》"></property>
</bean>
</beans>
通过构造注入,之前的都为设值注入
//若通过构造注入,bean(java类)中必须要有构造函数
通过<constructor-arg.../>注入,value="String等基本类型" ref=“bean”
可以通过index属性指定构造参数值将作为第几个构造参数值,index="0"表明作为第一个构造函数参数值,错位开了
一般采用设值注入为主,构造注入为辅
src\dayday\HelloSpring.java
package dayday;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class HelloSpring {
private Book book;
private String name; public HelloSpring(String name,Book book){
this.name=name;
this.book=book;
}
public void println(){
System.out.println("hello "+name+" ,study Spring hard!!!"+book.print());
} public static void main(String[] args){
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
HelloSpring hellospring=ctx.getBean("hellospring",HelloSpring.class);
hellospring.println();
} }
 
src\dayday\Book.java
package dayday;

/**
* Created by I am master on 2016/11/28.
*/
public class Book {
private String bookname;
public Book(String bookname){
this.bookname=bookname;
}
public String print(){
return "read "+bookname;
}
}
 
src\dayday\Main.java
package dayday;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class Main {
public static void main(String[] args){
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
HelloSpring hellospring=ctx.getBean("hellospring",HelloSpring.class);
hellospring.println();
} }
 
src\dayday\beans.xml
<?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="hellospring" class="dayday.HelloSpring">
<constructor-arg value="dayday"></constructor-arg>
<constructor-arg ref="book"></constructor-arg>
</bean>
<bean id="book" class="dayday.Book">
<constructor-arg value="《Spring MVC》"></constructor-arg>
</bean>
</beans>
bean作用域的配置 
用scope属性来配置bean的作用域
Singleton:默认值,容器初始时创建bean实例
在执行 <bean id="hellospring" class="dayday.HelloSpring">这句是调用无参构造函数创建
在整个容器的生命周期内只创建这一个bean,单例的
常用的还有
prototype,每次调用getbean()方法就调用构造函数创建一个bean
												

最新文章

  1. SharePoint 2013 扩展查阅项功能
  2. WLS_Oracle Weblogic管理概述(概念)
  3. javax.mail.MessagingException: 501 Syntax: HELO hostname Linux端异常解决
  4. OpenVPN下载、安装、配置及使用详解
  5. 关掉PUTTY后,进程仍可以运行。
  6. Javascript 开发IDE
  7. curl几个选项
  8. 关于对象存入NSUserDefaults
  9. Android 服务_笔记
  10. eclipse编码设置
  11. 我眼中的Adaboost
  12. oracle登录管理员创建数据库和表空间
  13. thinkphp3.2在nginx下的配置
  14. POJ1569 Myacm Triangles
  15. MYSQL + MHA +keepalive + VIP安装配置(一)--MYSQL安装配置
  16. poi 读取使用 Strict Open XML 保存的 excel 文档
  17. 初识 Fuzzing 工具 WinAFL
  18. commit命令
  19. 巨蟒python全栈开发flask12项目开始4
  20. 20145302张薇 Java第一周学习总结

热门文章

  1. Tableau(数据抽取)
  2. mmorpg手游中的战斗系统
  3. Missing (Mono Script), Missing Prefab
  4. LoadRunner ERROR: java.lang.NumberFormatException
  5. 使用 Sublime Text 2 开发 Unity3D 项目
  6. 基础算法之选择排序Selection Sort
  7. js多行省略
  8. 第一章 UI实战开发 UIWindow UIView
  9. C# in depth学习(1)
  10. c#判断IP是否可以Ping通