标签:frame tool 名称空间 处理 context let 重用 类对象 command
1
2
3
4
5
6
|
<!-- class 指定类对象的全类名,交给服务器创建一个对象 id是一个唯一标识,在IOC只能出现一个id为book的bean对象 --> <bean id= "book" class = "com.neuedu.spring.bean.Book" > <property name= "bookName" value= "JAVA" ></property> <property name= "author" value= "you" ></property> <property name= "price" value= "123.123" ></property> </bean> |
1
2
3
4
5
6
7
8
9
10
|
public class TestIOC { @Test public void test() { //1.获取IOC容器本身这个对象 ApplicationContext ioc = new ClassPathXmlApplicationContext( "applicationContext.xml" ); //2.从IOC容器中获取bean对象 Object bean = ioc.getBean( "book" ); System.out.println(bean); } } |
1
2
3
4
5
6
7
8
9
10
|
public class TestIOC { @Test public void test() { //1.获取IOC容器本身这个对象 ApplicationContext ioc = new ClassPathXmlApplicationContext( "applicationContext.xml" ); //2.从IOC容器中获取bean对象 Book bean = ioc.getBean(Book. class ); System.out.println(bean.getBookName()+ "---" +bean.getAuthor()+ "---" +bean.getPrice()); } } |
要注意,创建实体类的时候要有无参构造器,没有无参的话会默认有一个无参构造器,但是这时要是有一个有参构造器,就构建不成对象,获取不到bean实例。
1
2
3
4
5
|
<bean id= "book01" class = "com.neuedu.spring.bean.Book" > <constructor-arg value= "you" index= "1" ></constructor-arg> <constructor-arg value= "C++" index= "0" ></constructor-arg> <constructor-arg value= "22.22" index= "2" type= "double" ></constructor-arg> </bean> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public class StudentController { private StudentService studentService; public StudentService getStudentService() { return studentService; } public void setStudentService(StudentService studentService) { this .studentService = studentService; } @Override public String toString() { return "StudentController [studentService=" + studentService + "]" ; } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public class StudentService { private StudentDao studentDao; public StudentDao getStudentDao() { return studentDao; } public void setStudentDao(StudentDao studentDao) { this .studentDao = studentDao; } @Override public String toString() { return "StudentService [studentDao=" + studentDao + "]" ; } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public class StudentDao { private String username; public String getUsername() { return username; } public void setUsername(String username) { this .username = username; } @Override public String toString() { return "StudentDao [username=" + username + "]" ; } } |
1
2
3
4
5
6
7
8
|
<!-- 给bean的级联属性赋值 --> <bean id= "studentDao" class = "com.neuedu.spring.bean.StudentDao" ></bean> <bean id= "studentService" class = "com.neuedu.spring.bean.StudentService" ></bean> <bean id= "studentController" class = "com.neuedu.spring.bean.StudentController" > <property name= "studentService" ref= "studentService" ></property> <property name= "studentService.studentDao" ref= "studentDao" ></property> <property name= "studentService.studentDao.username" value= "zhangsan" ></property> </bean> |
1
2
3
4
5
6
7
8
9
10
|
public class TestIOC { @Test public void test() { //1.获取IOC容器本身这个对象 ApplicationContext ioc = new ClassPathXmlApplicationContext( "applicationContext.xml" ); //2.从IOC容器中获取bean对象 Object bean = ioc.getBean( "studentController" ); System.out.println(bean); } } |
1
2
3
4
5
6
7
|
<!-- 通过p名称空间为bean赋值 --> <bean id= "student" class = "com.neuedu.spring.bean.Student" p:name= "zhangsan" p:gender= "1" p:address= "China" > </bean> |
1
2
3
|
<!-- 测试bean的作用域,分别创建单实例和多实例的bean --> <bean id= "book2" scope= "singleton" class = "com.neuedu.spring.bean.Book" ></bean> <bean id= "student2" scope= "prototype" class = "com.neuedu.spring.bean.Student" ></bean> |
显示 一个book ,三个 student
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class TestIOC { //1.获取IOC容器本身这个对象 private ApplicationContext ioc = new ClassPathXmlApplicationContext( "applicationContext.xml" ); @Test public void test() { ioc.getBean( "book" ); ioc.getBean( "book" ); ioc.getBean( "book" ); ioc.getBean( "student" ); ioc.getBean( "student" ); ioc.getBean( "student" ); } } |
1
2
|
<bean id= "book" class = "com.neuedu.spring.bean.Book" ></bean> <bean id= "student" class = "com.neuedu.spring.bean.Student" ></bean> |
1
2
3
4
5
6
7
8
9
|
public class TestIOC { private ApplicationContext ioc = new ClassPathXmlApplicationContext( "applicationContext.xml" ); @Test public void test() { } } |
1
|
<bean id= "teacher" class = "com.neuedu.spring.bean.Teacher" init-method= "teacherinit" destroy-method= "destroy" ></bean> |
但是调用不了 destroy 方法,通过 ApplicationContext 的子类的 close 方法调用 destroy 方法
1
2
3
4
5
6
7
8
9
10
11
|
public class TestIOC { private ApplicationContext ioc = new ClassPathXmlApplicationContext( "applicationContext.xml" ); @Test public void test() { ConfigurableApplicationContext cac = (ConfigurableApplicationContext) ioc; ioc.getBean( "teacher" ); cac.close(); } } |
1
2
3
|
<bean id= "book" class = "com.neuedu.spring.bean.Book" depends-on= "student" ></bean> <bean id= "student" class = "com.neuedu.spring.bean.Student" ></bean> <bean id= "teacher" class = "com.neuedu.spring.bean.Teacher" init-method= "teacherinit" destroy-method= "destroy" ></bean> |
1
2
3
4
5
6
7
8
9
10
11
|
<bean id= "book" class = "com.neuedu.spring.bean.Book" > <property name= "bookName" value= "JAVA" ></property> <property name= "author" value= "you" ></property> <property name= "price" value= "43.43" ></property> <property name= "isbn" value= "home" ></property> </bean> <bean id= "book1" class = "com.neuedu.spring.bean.Book" parent= "book" > <property name= "price" value= "34.23" ></property> <property name= "isbn" value= "house" ></property> </bean> |
1
2
3
4
5
6
7
8
9
10
11
|
<bean id= "book" class = "com.neuedu.spring.bean.Book" abstract = "true" > <property name= "bookName" value= "JAVA" ></property> <property name= "author" value= "you" ></property> <property name= "price" value= "43.43" ></property> <property name= "isbn" value= "home" ></property> </bean> <bean id= "book1" parent= "book" > <property name= "price" value= "43.43" ></property> <property name= "isbn" value= "home" ></property> </bean> |
1
2
3
4
5
|
<bean id= "book" class = "com.neuedu.spring.bean.Book" > <property name= "bookName" value= "java" ></property> <property name= "price" value= "33.5" ></property> <property name= "isbn" value= "house" ></property> </bean> |
也可以这么写,将<null/> 写进<property> 中
1
2
3
4
5
6
7
8
|
<bean id= "book" class = "com.neuedu.spring.bean.Book" > <property name= "bookName" value= "java" ></property> <property name= "author" > < null /> </property> <property name= "price" value= "33.5" ></property> <property name= "isbn" value= "house" ></property> </bean> |
1
2
3
4
5
6
7
8
|
<bean id= "book" class = "com.neuedu.spring.bean.Book" > <property name= "bookName" value= "java" ></property> <property name= "isbn" value= "house" ></property> </bean> <bean id= "bookShop" class = "com.neuedu.spring.bean.BookShop" > <property name= "address" value= "河北" ></property> <property name= "book" ref= "book" ></property> </bean> |
1
2
3
4
5
6
7
8
9
10
11
|
<bean id= "bookShop" class = "com.neuedu.spring.bean.BookShop" > <property name= "address" value= "河北" ></property> <property name= "book" > <bean class = "com.neuedu.spring.bean.Book" > <property name= "bookName" value= "java" ></property> <property name= "author" value= "you" ></property> <property name= "price" value= "43.32" ></property> <property name= "isbn" value= "house" ></property> </bean> </property> </bean> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<bean id= "book1" class = "com.neuedu.spring.bean.Book" > <property name= "bookName" value= "java" ></property> </bean> <bean id= "book2" class = "com.neuedu.spring.bean.Book" > <property name= "author" value= "you" ></property> </bean> <bean id= "book3" class = "com.neuedu.spring.bean.Book" > <property name= "price" value= "43.43" ></property> </bean> <bean id= "book4" class = "com.neuedu.spring.bean.Book" > <property name= "isbn" value= "home" ></property> </bean> <bean id= "bookShop" class = "com.neuedu.spring.bean.BookShop" > <property name= "bookList" > <list> <ref bean= "book1" /> <ref bean= "book2" /> <ref bean= "book3" /> <ref bean= "book4" /> </list> </property> </bean> |
1
2
3
4
5
6
7
8
9
10
11
12
|
public class TestIOC { private ApplicationContext ioc = new ClassPathXmlApplicationContext( "applicationContext.xml" ); @Test public void test() { BookShop bean = ioc.getBean(BookShop. class ); List<Book> bookList = bean.getBookList(); for (Book book : bookList){ System.out.println(book); } } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<bean id= "bookShop" class = "com.neuedu.spring.bean.BookShop" > <property name= "bookMap" > <map> <entry> <key> <value>book1</value> </key> <ref bean= "book1" /> </entry> <entry> <key> <value>book2</value> </key> <ref bean= "book2" /> </entry> <entry> <key> <value>book3</value> </key> <ref bean= "book3" /> </entry> <entry> <key> <value>book4</value> </key> <ref bean= "book4" /> </entry> </map> </property> </bean> |
用 .entry 遍历 map 集合
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public class TestIOC { private ApplicationContext ioc = new ClassPathXmlApplicationContext( "applicationContext.xml" ); @Test public void test() { BookShop bean = ioc.getBean(BookShop. class ); Map<String, Book> bookMap = bean.getBookMap(); Set<Entry<String,Book>> entrySet = bookMap.entrySet(); for (Entry<String, Book> entry : entrySet) { System.out.println(entry.getKey()+ "===" +entry.getValue()); } } } |
1
2
3
4
5
6
7
8
9
10
|
<bean id= "bookShop" class = "com.neuedu.spring.bean.BookShop" > <property name= "p" > <props> <prop key= "book1" >value1</prop> <prop key= "book2" >value2</prop> <prop key= "book3" >value3</prop> <prop key= "book4" >value4</prop> </props> </property> </bean> |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public class TestIOC { private ApplicationContext ioc = new ClassPathXmlApplicationContext( "applicationContext.xml" ); @Test public void test() { BookShop bean = ioc.getBean(BookShop. class ); java.util.Properties p = bean.getP(); System.out.println(p.get( "book1" )); System.out.println(p.get( "book2" )); System.out.println(p.get( "book3" )); System.out.println(p.get( "book4" )); } } |
Spring(一)--作用、IOC容器细节、搭配环境、Spring实验 (转)
标签:frame tool 名称空间 处理 context let 重用 类对象 command
原文地址:http://www.cnblogs.com/zuiai/p/7442122.html