【Spring】的【Bean】管理(注解)【四个相同功能的注解】
【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】管理(注解)【四个相同功能的注解】的更多相关文章
- Spring的bean管理(注解方式)
注解:代码中的特殊标记,注解可以使用在类.方法.属性上面,使用注解可实现一些基本的功能.注解的写法是@注解名称(属性=属性值). 使用注解创建对象 第一步,创建Web项目,引入Spring的开发包 第 ...
- (转)Spring的bean管理(注解方式)
http://blog.csdn.net/yerenyuan_pku/article/details/69663779 Spring的bean管理(注解方式) 注解:代码中的特殊标记,注解可以使用在类 ...
- Spring 的Bean管理的常用注解
属性注入的注解(使用注解注入的方式,可以不用提供set方法) @Value 用于注入普通类型 @Autowired 自动装配 :默认按类型进行装配 按名称注入 @Qualifier 强制使用名称注入 ...
- Spring 的 Bean 管理(注解方式)
Spring 的 Bean 管理(注解方式) 1. 导入必要的 jar 包和 xml 文件 使用注解需要导入 spring-aop 的 jar 包. applicationContext.xml 文件 ...
- Spring之Bean管理------注解方式
编写测试类 1,编写相关的类 public interface UserDao { public void sayHello(); } public class UserDaoImpl impleme ...
- Spring学习(二)Spring的bean管理(XML)
Bean的实例化方式 1.在Spring里面通过配置文件创建对象 2.bean实例化的三种方式第一种:使用类的无参数构造函数创建(最常用的方式,第2种和第3种方法一般不用) 如果类里面没有无参的构造函 ...
- 面试阿里,字节,美团必看的Spring的Bean管理详解
IOC容器 工厂只负责创建对象,而Spring当然不仅仅是一个对象工厂,其核心是一个对象容器,其具备控制反转的能力,所以也称为IOC容器. 帮助我们存放对象,并且管理对象,包括:创建.销毁.装配,这样 ...
- Spring 的 Bean 管理(XML 方式)
Spring 的 Bean 管理(XML 方式) 1. 三种实例化 Bean 的方式 使用类构造器实例化(默认无参数) 使用静态工厂方法实例化(简单工厂模式) 使用实例工厂方法实例化(工厂方法模式) ...
- Spring Boot 2.X(十四):日志功能 Logback
Logback 简介 Logback 是由 SLF4J 作者开发的新一代日志框架,用于替代 log4j. 主要特点是效率更高,架构设计够通用,适用于不同的环境. Logback 分为三个模块:logb ...
随机推荐
- python模块之导入包及模块发布
1.导入包(不常用的方法) 在使用python的包时,有时候想直接导入包名,然后通过包名来调用模块,例如: temp为我们创建的一个包,如果我们想通过下面的方式进行导入模块中的方法,将会出错 impo ...
- MyEclipse使用教程:使用主题自定义工作台外观
[MyEclipse CI 2019.4.0安装包下载] 您可以通过选择Window>Preferences>General>Appearance来使用主题自定义的工作台外观,可以从 ...
- thinkphp一般数据库操作
引入命名空间 插入 更新 查询 删除 一些支持命令行的操作 清空操作 分库操作 分库相关配置---在config.php中进行 使用: 参数绑定 占位符绑定 第一句后半拉
- iOS的UILabel设置多行显示
label.lineBreakMode = NSLineBreakByWordWrapping; label.numberOfLines = ;
- 【NOIP2016提高A组五校联考4】ksum
题目 分析 发现,当子段[l,r]被取了出来,那么[l-1,r].[l,r+1]一定也被取了出来. 那么,首先将[1,n]放入大顶堆,每次将堆顶的子段[l,r]取出来,因为它是堆顶,所以一定是最大的子 ...
- python1--比较三个数值的大小
num1 = input("num1:")num2 = input("num2:")num3 = input("num3:")num = m ...
- js中[]、{}、()区别
一.{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数体 {}表示对象.[]表示对象的属性.方法,()如果用在方法名后面,代表调用 如:var LangShen = {&quo ...
- 私有ip地址知多少?
1.私有ip的由来 在现在的网络中,ip地址分为公网ip地址和私有ip地址.公网ip是在Internet中使用的ip地址,而私有ip地址是在局域网中使用,在Internet上不使用. 由于我们目前使用 ...
- Halcon10.0 + VS2010
新建一个C++空项目 添加c1.pp 复制example1.cpp的代码 配置include\lib\bin\Linker之后
- 利用word宏功能一键导出数据库表结构
前言: 需求是: 为了完成<数据库设计文档>中的表结构展示,需要导出所有的表结构,包括字段名.长度.注释等必要标题. 数据库:MySQL 我选择的方法是——用word的宏功能导出.很多博客 ...