使用注解的前提:
- 先在pom.xml导入 Spring 开发的基本包坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
-
创建Spring核心配置文件applicationContext.xml, 该配置文件对应的是Spring容器
-
使用注解, 需要先在核心配置文件中添加包扫描配置
<?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
">
<!--使用注解,需要在spring核心配置文件中,通过<context>标签添加包扫描,告诉系统识别注解-->
<context:component-scan base-package="com.rcd"></context:component-scan>
</beans>
注解
总结
0, 注解的参数: 可以按住Ctrl点击注解查看参数
1, dao层、service层、web层快速生成bean对象的注解:
@component()、@controller()、@service()、@repository()
2, service层引入dao层bean对象的注解:
@Autowire、@Qualifier()、@Resource(name="beanID")
@Component
使用在类上用于【实例化Bean】
可以在service、dao对应的类上使用该注解,xml中就不用配置了
不确定具体的层时,使用该注解,相当于下面三个注解:
@Controller
@Service
@Repository
这三个注解更加的语义化,可以在不同的业务层使用不同的注解。
@Controller
使用在web层类上用于实例化Bean
@Service("serviceID")
使用在service层类上用于实例化Bean
@Repository("daoID")
使用在dao层类上用于实例化Bean
@Autowired
使用在字段上,用于根据类型依赖注入
如果相同类型的数据超过1个,必须要和@Qualifier()配合使用,
如果相同类型的数据只有1个,可以不用写@Qualifier()
比如:该注解可以替换:一个serviceBeanA引用另一个id为user1的daoBean
<bean ref='user1'>
@Qualifier("beanID")
结合@Autowired一起使用, 用于根据id名称进行依赖注入
@Resource(name="beanID")
相当于@Autowired+@Qualifier,按照id名称进行依赖注入
@Value
注入普通属性, 通常用于dao层
@Scope
标注Bean的作用范围, 和生成bean的注解@component()、@controller()、@service()、@repository()等配合使用.
@PostConstruct
使用在方法上标注该方法是Bean 的初始 化方法
@PreDestroy
使用在方法上标注该方法是Bean 的销毁 方法
注解演示Demo
@Service("userService") //生成userService的bean
//@Scope("prototype") //多例
@Scope("singleton") //单例
public class UserServiceImpl implements UserService {
@Value("${jdbc.driver}")
private String driver;
//<property name="userDao" ref="userDao"></property>
//@Autowired //按照数据类型从Spring容器中进行匹配的
//@Qualifier("userDao") //是按照id值从容器中进行匹配的 但是主要此处@Qualifier结合@Autowired一起使用
@Resource(name="userDao") //@Resource相当于@Qualifier+@Autowired
private UserDao userDao;
public void save() {
System.out.println(driver);
userDao.save();
}
//使用在方法上标注该方法是Bean的初始化方法
@PostConstruct
public void init(){
System.out.println("Service对象的初始化方法");
}
//使用在方法上标注该方法是Bean的销毁方法
@PreDestroy
public void destory(){
System.out.println("Service对象的销毁方法");
}
}
- spring新注解
@Configuration
用于指定当前类是一个Spring配置类,当创建容器时会从该类上加载注解
@ComponentScan("com.rcd")
指定spring在初始化容器时要扫描的包com.rcd下的所有目录
@Bean('beanID')
使用在方法上,标注将该方法的返回值存储到 Spring 容器中生成bean实例, 并将id设置为beanID
@PropertySource("xxx.properties")
用于加载xxx.properties 文件中的配置,使用EL表达式可以获取变量对应的值
@Import(Xxx.class)
用于导入其他配置类