Spring的Bean管理(注解方式)

使用@Component 描述Spring框架中的Bean

  • 使用注解定义Bean

    @Component 描述Spring框架中的Bean
  • 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"
         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="com.imooc"/>
    
    
    
  • 在UserService类中,加上@Component("userService"),括号里面是bean的名字
    @Component("userService")
    public class UserServices {
        public String sayHello(String name) {
            return "Hello " + name;
        }
  • 在测试类中:
    public void demo1() {
        ApplicationContext applicationContext = new                 
                    ClassPathXmlApplicationContext("applicationContext.xml");
        UserServices userServices = (UserServices)     
                  applicationContext.getBean("userService");
        String s = userServices.sayHello("牛");
        System.out.println(s);
    }

测试类中与在xml中的配置方法是一致的

另外3个功能基本等效的注解

  • @Repository 用于对DAO实现类进行标注
  • @Service 用于对Service实现类进行标注
  • @Controller 用于对Controller实现类进行标注

    Spring的属性注入-注解方式

1.简单类型的@value("") 注意在类名下方
2.对象值得注入@Autowired 默认按照类型进行注入 注意在属性值前面,而且没有值

  • 如果存在两个相同Bean类型,则按照名称注入

  • @Autowired注入时可以针对成员变量或者set方法

    @Component("userService")
    public class UserServices {
       @Value("米饭")
       private String something;
       @Autowired
       private UserDao userDao;
       public String sayHello(String name) {
           return "Hello " + name;
       }
       public void eat() {
           System.out.println("eat :" + something);
       }
    
       public void save() {
           System.out.println("service 中保存用户的方法");
           userDao.save();
       }
    }

3.通过@Autowired的required属性,设置一定要找到匹配的Bean

  • 使用@Qualifier 指定注入Bean的名称
    两个标签一起使用,保证@Autowired注入的和注解Bean:UserDao设置的名称必须一致

    • 4.上述两行可以使用@Resource(name="Bean的名称"),一个标签搞定 **

      其他注解

      图片说明
  • 使用注解开发时候,默认作用范围都是singleton,可以使用@Scope注解用于指定Bean的作用范围

xml配置和注解配置混合使用

图片说明