Spring学习——IOC(3)

Spring的bean管理(注解方式)

1. 示例准备

(1)导入jar包

Spring学习——IOC(3)_第1张图片

(2)创建类和方法

1 public class User {
2     public void fun() {
3         System.out.println("function");
4     }
5 }

(3)创建spring配置文件并引入约束

在beans约束的基础上,引入context约束。

xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
beans>

(4)开启注解扫描

xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
        
            
        <context:component-scan base-package="cn.itcast">context:component-scan>
beans>

 

2. 创建对象

1 import org.springframework.stereotype.Component;
2 
3 @Component(value = "user")
4 public class User {
5     public void fun() {
6         System.out.println("function");
7     }
8 }
 1 import org.junit.Test;
 2 import org.springframework.context.ApplicationContext;
 3 import org.springframework.context.support.ClassPathXmlApplicationContext;
 4 
 5 public class TestAnno {
 6     @Test
 7     public void testUser() {
 8         ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
 9         User user = (User) context.getBean("user");
10         System.out.println(user);
11         user.fun();
12     }
13 }

(1)创建对象使用的四个注解

Spring中提供@Component的三个衍生注解(功能目前是一致的):

- @Controller:WEB层

- @Service:业务层

- @Repository:持久层

三个注解是为了让标注类本身的用途清晰,Spring在后续版本中会对其增强。

(2)Scope注解

 Spring学习——IOC(3)_第2张图片

 

3. 属性注入

1 import org.springframework.stereotype.Component;
2 
3 @Component(value = "userDao")
4 public class UserDao {
5     public void fun() {
6         System.out.println("dao");
7     }
8 }

(1)@Autowired

 使用@Autowired注解进行对象自动注入,只根据类名(UserDao)查找,而不是注解中的value值(userDao)。

 1 import org.springframework.beans.factory.annotation.Autowired;
 2 import org.springframework.stereotype.Service;
 3 
 4 @Service(value = "userService")
 5 public class UserService {
 6     @Autowired 
 7     private UserDao userDao; 
 8     public void fun() {
 9         System.out.println("service");
10         userDao.fun();
11     }
12 }

(2)@Resource

name属性中的值为注入类(UserDao)上面的注解的value值(userDao),根据该name属性查找并注入对象。

1     @Resource(name = "userDao")
2     private UserDao userDao;

(4)测试方法

 1 import org.junit.Test;
 2 import org.springframework.context.ApplicationContext;
 3 import org.springframework.context.support.ClassPathXmlApplicationContext;
 4 
 5 public class TestAnno {
 6     @Test
 7     public void testService() {
 8         ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
 9         UserService userService = (UserService) context.getBean("userService");
10         userService.fun();
11     }
12 }

 

 

你可能感兴趣的:(Spring学习——IOC(3))