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

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

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

  1.创建类,创建方法

 public class User {
public void add(){
System.out.println("add-----------");
}
}

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

 <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"> <!-- bean definitions here -->
</beans>

  3.配置开启注解扫描

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

一、 使用注解创建对象

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

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

写测试代码

 @Test
public void testAno(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User)applicationContext.getBean("user");
user.add();
}

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

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

@Controller

Web层

@Service

业务层

@Repository

持久层

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

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

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

二、使用注解注入属性

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

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

 @Component(value="userdao")
public class UserDao {
public void add(){
System.out.println("dao--------------add");
}
}
@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();
}
}
 @Test
public void testService(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService)applicationContext.getBean("userservice");
userService.add();
}

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

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

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

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

 public class BookDao {
public void book(){
System.out.println("book dao-----------");
}
}
 public class OrderDao {
public void order(){
System.out.println("order dao-----------");
}
}
 public class BookService {
//得到bookdao和orderdao对象
@Resource(name="bookDao")
private BookDao bookdao;
@Resource(name="orderDao")
private OrderDao orderdao; public void add(){
System.out.println("bookservice");
bookdao.book();
orderdao.order();
}
}

配置文件

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

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

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

【Spring】的【Bean】管理(注解)【四个相同功能的注解】的更多相关文章

  1. Spring的bean管理(注解方式)

    注解:代码中的特殊标记,注解可以使用在类.方法.属性上面,使用注解可实现一些基本的功能.注解的写法是@注解名称(属性=属性值). 使用注解创建对象 第一步,创建Web项目,引入Spring的开发包 第 ...

  2. (转)Spring的bean管理(注解方式)

    http://blog.csdn.net/yerenyuan_pku/article/details/69663779 Spring的bean管理(注解方式) 注解:代码中的特殊标记,注解可以使用在类 ...

  3. Spring 的Bean管理的常用注解

    属性注入的注解(使用注解注入的方式,可以不用提供set方法) @Value 用于注入普通类型 @Autowired 自动装配 :默认按类型进行装配  按名称注入 @Qualifier 强制使用名称注入 ...

  4. Spring 的 Bean 管理(注解方式)

    Spring 的 Bean 管理(注解方式) 1. 导入必要的 jar 包和 xml 文件 使用注解需要导入 spring-aop 的 jar 包. applicationContext.xml 文件 ...

  5. Spring之Bean管理------注解方式

    编写测试类 1,编写相关的类 public interface UserDao { public void sayHello(); } public class UserDaoImpl impleme ...

  6. Spring学习(二)Spring的bean管理(XML)

    Bean的实例化方式 1.在Spring里面通过配置文件创建对象 2.bean实例化的三种方式第一种:使用类的无参数构造函数创建(最常用的方式,第2种和第3种方法一般不用) 如果类里面没有无参的构造函 ...

  7. 面试阿里,字节,美团必看的Spring的Bean管理详解

    IOC容器 工厂只负责创建对象,而Spring当然不仅仅是一个对象工厂,其核心是一个对象容器,其具备控制反转的能力,所以也称为IOC容器. 帮助我们存放对象,并且管理对象,包括:创建.销毁.装配,这样 ...

  8. Spring 的 Bean 管理(XML 方式)

    Spring 的 Bean 管理(XML 方式) 1. 三种实例化 Bean 的方式 使用类构造器实例化(默认无参数) 使用静态工厂方法实例化(简单工厂模式) 使用实例工厂方法实例化(工厂方法模式) ...

  9. Spring Boot 2.X(十四):日志功能 Logback

    Logback 简介 Logback 是由 SLF4J 作者开发的新一代日志框架,用于替代 log4j. 主要特点是效率更高,架构设计够通用,适用于不同的环境. Logback 分为三个模块:logb ...

随机推荐

  1. 【转载】平时的你VS面试的你

    https://www.cnblogs.com/rjzheng/p/10275453.html 引言 大家在面试的时候,特别是最后一面HR面,是不是经常都说自己咳咳咳.博主特意总结了一下平时的你和面试 ...

  2. 安装与学习laravel

    安装 composer cd /var/www/html curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/ ...

  3. 从标准输入读取一行数组并保存(用的是字符串分割函数strtok_s() )

    首先介绍字符串分割函数: char *strtok_s( char *strToken, //字符串包含一个标记或一个以上的标记. const char *strDelimit, //分隔符的设置 c ...

  4. Linux下网络设置

    1.临时IP配置 # ifconfig eth0   192.168.110.118    netmask 255.255.255.0   gateway 192.168.110.2    up # ...

  5. 索引介绍,转载自:https://tech.meituan.com/2014/06/30/mysql-index.html

    索引原理 除了词典,生活中随处可见索引的例子,如火车站的车次表.图书的目录等.它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是我们总 ...

  6. 用Maven搭建简单的SpringMVC框架

    本文会详细阐述如何用Maven搭建一个简单的SpringMVC框架 这里就不介绍SpringMVC框架了,咱们直接来搭建 第一步 创建一个Maven的web项目  这里有一个简单的方法 new一个Ma ...

  7. 跨域 (1) jsonp 跨域

    jsonp 的例子 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  8. ip addr详解

    Windows上查看IP地址是ipconfig, Linux上是ifconfig,但是Linux上还有一个命令叫ip addr可以查看IP地址. ip addr : lo: <LOOPBACK, ...

  9. 【leetcode&CN&竞赛】1196.How Many Apples Can You Put into the Basket

    题目如下: 楼下水果店正在促销,你打算买些苹果,arr[i] 表示第 i 个苹果的单位重量. 你有一个购物袋,最多可以装 5000 单位重量的东西,算一算,最多可以往购物袋里装入多少苹果. 示例 1: ...

  10. 箱排序(Bin Sort)

    1.基本思想 排序过程无须比较关键字,而是通过"分配"和"收集"过程来实现排序.它们的时间复杂度可达到线性阶:O(n). 箱排序也称桶排序(Bucket Sor ...