spring学习之Bean的装配

三种方式:基于xml的装配,基于annotation的装配,自动装配(自动装配不怎么使用所以没有做)

项目结构:

annotation装配:

基于xml的装配:

ps:在lib中引用了aop包。

1.基于xml的装配

 User.java

 1 package com.tiheima.assembled;
 2 
 3 import java.util.List;
 4 
 5 public class User {
 6     private String username;
 7     private Integer password;
 8     private List<String> list;
 9     @Override
10     public String toString() {
11         return "User [username=" + username + ", password=" + password + ", list=" + list + "]";
12     }
13     
14 
15     /*
16      * 使用构造注入 
17      * 提供带所有参数的构造方法
18      */
19     public User(String username, Integer password, List<String> list) {
20         super();
21         this.username = username;
22         this.password = password;
23         this.list = list;
24     }
25 
26     /*
27      * 使用设置注入 
28      * 提供默认无参构造函数 
29      * 提供所有属性的set方法
30      */
31     public User() {
32         super();
33         
34     }
35     
36     public String getUsername() {
37         return username;
38     }
39     public void setUsername(String username) {
40         this.username = username;
41     }
42     public Integer getPassword() {
43         return password;
44     }
45     public void setPassword(Integer password) {
46         this.password = password;
47     }
48     public List<String> getList() {
49         return list;
50     }
51     public void setList(List<String> list) {
52         this.list = list;
53     }
54     
55 }

XmlBeanAssembleTest.java

 1 package com.tiheima.assembled;
 2 
 3 import org.springframework.context.ApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 
 6 /*xml装配方式实例化bean*/
 7 
 8 public class XmlBeanAssembleTest {
 9 
10     public static void main(String[] args) {
11         // TODO Auto-generated method stub
12         String xmlString="com/tiheima/assembled/beans5.xml";
13           ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlString);
14           System.out.println(applicationContext.getBean("user1"));
15           System.out.println(applicationContext.getBean("user2"));
16     }
17 
18 }

beans5.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5         http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
 6     
 7     <!-- 基于xml的装配,构造注入方式装配User实例 -->
 8     
 9     <bean id="user1" class="
10     com.tiheima.assembled.User">
11     <constructor-arg index="0" value="tom"></constructor-arg>
12     <constructor-arg index="1" value="123456"></constructor-arg>
13     <constructor-arg index="2">
14         <list>
15         <value>"value1"</value>
16         <value>"value2"</value>
17         </list>
18     </constructor-arg>
19     
20     <!-- 基于xml的装配,用设值注入方式装配User实例 -->
21     </bean>
22     <bean id="user2" class="com.tiheima.assembled.User">
23     <property name="username" value="张三"></property>
24     <property name="password" value="654321"></property>
25     <property name="list">
26         <list>
27         <value>"setlistvalue3"</value>
28         <value>"setlistvalue4"</value>
29         </list>
30     </property>
31     </bean>
32 </beans>

实验截图:

实例化了两个User对象。

2.基于annotation装配

UserDao.java

1 package com.itheima.annotation;
2 
3 public interface UserDao {
4      public void save(); 
5 }

UserDaoImpl.java

 1 package com.itheima.annotation;
 2 
 3 import org.springframework.stereotype.Repository;
 4 
 5 @Repository("userDao")
 6 public class UserDaoImpl implements UserDao {
 7 
 8     @Override
 9     public void save() {
10         // TODO Auto-generated method stub
11         System.out.println("userdao save");
12     }
13 
14 }

UserService.java

1 package com.itheima.annotation;
2 
3 public interface UserService {
4     public void save();
5 }

UserServiceImpl.java

 1 package com.itheima.annotation;
 2 
 3 import javax.annotation.Resource;
 4 
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.stereotype.Service;
 7 
 8 @Service("userService")
 9 public class UserServiceImpl implements UserService {
10     
11     //@Resource(name = "userDao")
12     @Autowired
13     private UserDao Userdao;
14     
15     public void setUserdao(UserDao userdao) {
16         this.Userdao = userdao;
17     }
18 
19     @Override
20     public void save() {
21         // TODO Auto-generated method stub
22         this.Userdao.save();
23         System.out.println("userservice  save");
24     }
25 
26 }

UserController.java

 1 package com.itheima.annotation;
 2 
 3 import javax.annotation.Resource;
 4 
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.stereotype.Controller;
 7 
 8 @Controller("userController")
 9 public class UserController {
10     
11     //@Resource(name = "userService")
12     @Autowired
13     private UserService userService;
14     
15     public void setUserService(UserService userService) {
16         this.userService = userService;
17     }
18 
19     public void save() {
20         this.userService.save();
21         System.out.println("controller   save");
22     }
23 }

AnnotationTest.java

 1 package com.itheima.annotation;
 2 
 3 import org.springframework.context.ApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 
 6 /*注解测试*/
 7 public class AnnotationTest {
 8 
 9     public static void main(String[] args) {
10         // TODO Auto-generated method stub
11         String xmlpatString="com/itheima/annotation/beans6.xml";
12         ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlpatString);
13         UserController userController=(UserController)applicationContext.getBean("userController");
14         userController.save();
15     }
16 
17 }

beans6.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     xsi:schemaLocation="http://www.springframework.org/schema/beans
 6         http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
 7         http://www.springframework.org/schema/context
 8         http://www.springframework.org/schema/context/spring-context-4.3.xsd">
 9         
10        <!-- 开启注解处理器  -->
11     <!-- <context:annotation-config>
12     </context:annotation-config>
13     <bean id="userDao" class="com.itheima.annotation.UserDaoImpl" ></bean>
14     <bean id="userService" class="com.itheima.annotation.UserServiceImpl" ></bean>
15     <bean id="userController" class="com.itheima.annotation.UserController" ></bean> -->
16     
17     
18      <!-- 基于annotation的装配,使用context命名空间,通知spring扫描指定包下所有的bean类,进行注解 -->
19     <context:component-scan base-package="com.itheima.annotation"></context:component-scan> 
20     
21     
22     
23 </beans>

截图:

annotation注解中用xml上面的开启注解也可以,也可以用下面的扫描包。annotation装配比xml装配更为广泛。

猜你喜欢

转载自www.cnblogs.com/2312947032zyk/p/11207276.html