Spring框架的Bean管理注解方式的快速入门
1. 步骤一:下载Spring框架的开发包
- 解压后的目录结构如下
* docs – API和开发规范
* libs – jar包和源码
Spring框架的jar包的特点是每个jar包都有3个(使用的jar包、文档的jar包和源代码的jar包)
* schema – 约束
2. 步骤二:创建JavaWEB项目,引入Spring的开发包
-
引入Spring框架IOC核心功能需要的具体的jar包
* Spring框架的IOC的功能,那么根据Spring框架的体系结构图能看到,只需要引入如下的jar包
- 在spring-framework-4.2.4.RELEASE/libs/下
* Beans
* Core
* Context
* Expression Language- Spring框架也需要引入日志相关的jar包
在spring-framework-3.0.2.RELEASE-dependencies/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1 com.springsource.org.apache.commons.logging-1.1.1.jar
还需要引入log4j的jar包 spring-framework-3.0.2.RELEASE-dependencies\org.apache.log4j\com.springsource.org.apache.log4j\1.2.15
* com.springsource.org.apache.log4j-1.2.15.j
- Spring框架也需要引入日志相关的jar包
3. 步骤三:创建对应的包结构,编写Java的类,要注意:以后使用Spring框架做开发,都需要来编写接口与实现类!!
-
com.tuzki.demo1
* UserService – 接口
* UserServiceImpl – 具体的实现类
4. 步骤四:在src的目录下,创建applicationContext.xml的配置文件,然后引入约束。注意:因为现在想使用注解的方式,那么引入的约束发生了变化
- 需要引入context的约束,具体的约束如下
<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">
</beans>
5. 步骤五:在applicationContext.xml配置文件中开启组件扫描
<!-- Spring的注解开发:组件扫描(类上注解: 可以直接使用属性注入的注解) -->
<context:component-scan base-package="com.tuzki.demo1"/>
- 注意:可以采用如下配置
<context:component-scan base-package="com.tuzki"/> 这样是扫描com.itheima包下所有的内容
6. 步骤六:在UserServiceImpl的实现类上添加注解
@Component(value="userService") -- 相当于在XML的配置方式中 <bean id="userService" class="...">
Spring框架中Bean管理的常用注解
1. @Component:组件.(作用在类上)
2. Spring中提供@Component的三个衍生注解:(功能目前来讲是一致的)
- @Controller – 作用在WEB层
- @Service – 作用在业务层
@Repository – 作用在持久层
说明:这三个注解是为了让标注类本身的用途清晰,Spring在后续版本会对其增强
3. 属性注入的注解(说明:使用注解注入的方式,可以不用提供set方法.)
- 如果是注入的普通类型,可以使用value注解
- @value – 用于注入普通类型
- 如果注入的是对象类型,使用如下注解
- @Autowired – 自动装配
* 注意:问题,默认按类型进行装配
* 如果想按名称注入 - @Qualifier(“bean的id或name”) – 强制使用名称注入
-
具体的代码如下:
- ProductService的代码
- @Autowired – 自动装配
@Service(value="productService")
public class ProductService {
@Autowired // 注入对象属性
@Qualifier(value="productDao") // 强制使用名称注入
private ProductDao productDao;
public void save(){
// 调用dao层
productDao.save();
}
}
* ProductDao的代码如下
@Repository(value="productDao")
public class ProductDao {
public void save(){
System.out.println("保存商品...");
}
}
- 刚才的上述两个注解一起使用,过于麻烦,所以提供了一个新的注解
* @Resource -- 相当于@Autowired和@Qualifier一起使用
* 修改ProductService的代码如下
@Service(value="productService")
public class ProductService {
@Resource(name="productDao")
private ProductDao productDao;
public void save(){
// 调用dao层
productDao.save();
}
}
4.传统的XML和注解混合使用的方式
- 概述
- XML配置文件的方式结构比较清晰
- 注解的方式开发比较简单(尤其是输入注入那一块比较简单)
- 概述所以有的时候,可能会把XML和注解联合到一起使用
- 使用XML来管理Bean,使用注解来提供属性注入的方式
- 可以在配置文件中添加如下属性
<!-- @Resource、@ PostConstruct、@ PreDestroy、@Autowired注解生效 -->
<context:annotation-config/>
注解和xml混合使用
spring管理bean包括:
1、对bean进行实例化
2、对bean的属性依赖注入
对bean进行实例化在xml中配置bean:为了更好管理系统中bean.
对bean的属性依赖注入使用注解:为了简化开发。
使用哪些注解:Autowired(和Qulifier)、resource
需要修改web.xml中监听器。加载多个配置文件:
<!-- 加载spring容器,与servletContext绑定 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 如果不指定contextConfigLocation,默认加载/WEB-INF/applicationContext.xml -->
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- spring配置文件 可以采用加载多个文件,中间以半角逗号分隔,也可以使用通配符号 -->
<param-value>classpath:spring/applicationContext.xml,classpath:spring/applicationContext-*.xml</param-value>
</context-param>
<!-- spring配置文件 可以采用加载多个文件,中间以半角逗号分隔,也可以使用通配符号 -->
<!-- spring配置文件 可以采用加载多个文件,中间以半角逗号分隔,也可以使用通配符号 -->
<param-value>classpath:spring/applicationContext.xml,classpath:spring/applicationContext-*.xml</param-value>
</context-param>