Spring的Bean管理(注解)四个相同功能的注解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring的Bean管理(注解)四个相同功能的注解相关的知识,希望对你有一定的参考价值。

【Spring】的【Bean】管理(注解)【四个相同功能的注解】

 

  • 注解:代码里面特殊的标记,使用注解也可以完成一些相关的功能。
  • 注解写法:@注解名称(属性名称=属性值)
  • 注解使用在类、方法、属性上面

 

  (注解可以替代配置文件,并非完全替代):

  1.创建类,创建方法

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

  2.创建spring配置文件,引入约束

1 <beans xmlns="http://www.springframework.org/schema/beans"
2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3     xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
4         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
5         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- bean definitions here -->
6 </beans>

  3.配置开启注解扫描

 

 1 <!-- 
 2         开启注解扫描功能
 3         (1)到包里面扫描类、方法、属性上面是否有注解
 4      -->
 5     <context:component-scan base-package="com.anno"></context:component-scan>
 6 
 7 
 8 
 9 <!-- 只会扫描属性上面的注解,所以我们不用 -->
10     <context:annotation-config></context:annotation-config>

 

一、 使用注解创建对象

在创建对象的类上面使用注解实现

 

1 @Component(value="user")    //<bean id="" class="">
2 public class User {
3     public void add(){
4         System.out.println("add-----------");
5     }
6 }

 

写测试代码

1 @Test
2     public void testAno(){
3         ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
4         User user = (User)applicationContext.getBean("user");
5         user.add();
6     }

   创建对象有四个注解,下面还有三个:

 

Spring中提供了@Component的三个衍生注解:(功能目前来说是一致的,都是用来创建对象)

@Controller

Web层

@Service

业务层

@Repository

持久层

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

 

  创建对象单实例还是多实例  在类上面添加注解@scope

 

1 @Component(value="user")    //<bean id="" class="">
2 @Scope(value="prototype")
3 public class User {
4     public void add(){
5         System.out.println("add-----------");
6     }
7 }

 

 

二、使用注解注入属性

 

第一种注解(很少用):@Autowired

 

需求:创建service类,创建dao类,在service得到dao对象

1 @Component(value="userdao")
2 public class UserDao {
3     public void add(){
4         System.out.println("dao--------------add");
5     }
6 }

 

@Service(value="userservice")
public class UserService {
    //得到dao对象
    //1定义dao类型属性
    //在dao属性上面使用注解完成对象注入 autowired代表自动装配/注入,注意这里的private UserDao userdao自动注入是根据类名注入的,和UserDao里面的注入对象没有任何关系
    @Autowired
    private UserDao userdao;
    //使用注解方式不需要set方法
    public void add(){
        System.out.println("service------------add");
        userdao.add();
    }
}

 

1 @Test
2     public void testService(){
3         ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
4         UserService userService = (UserService)applicationContext.getBean("userservice");
5         userService.add();
6     }

 

第二种注解(经常用,因为能够准确注入)@Resource

 

 

 1 @Service(value="userservice")
 2 public class UserService {
 3     //得到dao对象
 4     //1定义dao类型属性
 5     //2在dao属性上面使用注解完成对象注入 autowired代表自动装配
 6     //@Autowired
 7     //name属性值写注解创建的dao对象value值
 8     @Resource(name="userdao")
 9     private UserDao userdao;
10     //使用注解方式不需要set方法
11     public void add(){
12         System.out.println("service------------add");
13         userdao.add();
14     }
15 }

 

 

三、xml和注解方式混合使用

 

1、创建对象的操作使用配置文件方式实现;

 

1 public class BookDao {
2     public void book(){
3         System.out.println("book dao-----------");
4     }
5 }

 

 

1 public class OrderDao {
2     public void order(){
3         System.out.println("order dao-----------");
4     }
5 }

 

 1 public class BookService {
 2     //得到bookdao和orderdao对象
 3     @Resource(name="bookDao")
 4     private BookDao bookdao;
 5     @Resource(name="orderDao")
 6     private OrderDao orderdao;
 7     
 8     public void add(){
 9         System.out.println("bookservice");
10         bookdao.book();
11         orderdao.order();
12     }
13 }

配置文件

1 <!-- 配置对象 -->
2     <bean id="bookService" class="com.xmlanno.BookService"></bean>
3     <bean id="bookDao" class="com.xmlanno.BookDao"></bean>
4     <bean id="orderDao" class="com.xmlanno.OrderDao"></bean>

 

2、注入属性的操作使用注解实现

 

1 //得到bookdao和orderdao对象
2     @Resource(name="bookDao")
3     private BookDao bookdao;
4     @Resource(name="orderDao")
5     private OrderDao orderdao;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于Spring的Bean管理(注解)四个相同功能的注解的主要内容,如果未能解决你的问题,请参考以下文章

Spring 注解学习笔记

Spring框架bean的注解管理方法

Spring的bean管理(注解)

Spring注解相关

IOC——Spring的bean的管理(注解方式)

SpringBoot脚手架项目002-004.Spring IOC_权限管理系统_Spring:什么是IOCSpring Bean注入SpringBean的注解bean的加载流程