1 Spring原始注解
Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置 文件可以简化配置,提高开发效率。
Spring原始注解主要是替代的配置
注解 | 说明 |
@Component | 使用在类上用于实例化Bean |
@Controller | 使用在web层类上用于实例化Bean |
@Service | 使用在service层类上用于实例化Bean |
@Repository | 使用在dao层类上用于实例化Bean |
@Autowired | 使用在字段上用于根据类型依赖注入 |
@Qualifier | 结合@Autowired一起使用用于根据名称进行依赖注入 |
@Resource | 相当于@Autowired+@Qualifier,按照名称进行注入 |
@Value | 注入普通属性 |
@Scope | 标注Bean的作用范围 |
@PostConstruct | 使用在方法上标注该方法是Bean的初始化方法 |
@PreDestroy | 使用在方法上标注该方法是Bean的销毁方法 |
例如:
- 使用@Compont或@Repository标识UserDaoImpl需要Spring进行实例化。
//<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"></bean> @Repository("userDao") public class UserDaoImpl implements UserDao { public void save() { System.out.println("save running..."); } }
- 使用@Compont或@Service标识UserServiceImpl需要Spring进行实例化
- 使用@Autowired或者@Autowired+@Qulifier或者@Resource进行userDao的注入
//<bean id="userService" class="com.itheima.service.impl.UserServiceImpl"> //@Component("userService") @Service("userService") //@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(); } @PostConstruct public void init(){ System.out.println("Service对象的初始化方法"); } @PreDestroy public void destory(){ System.out.println("Service对象的销毁方法"); } }
- 使用@Value进行字符串的注入
@Value("${jdbc.driver}") private String driver;
- 使用@Scope标注Bean的范围
@Scope("singleton")
- 使用@PostConstruct标注初始化方法,使用@PreDestroy标注销毁方法
@PostConstruct public void init(){ System.out.println("Service对象的初始化方法"); } @PreDestroy public void destory(){ System.out.println("Service对象的销毁方法"); }
2 Spring新注解
使用上面的注解还不能全部替代xml配置文件,还需要使用注解替代的配置如下:
- 非自定义的Bean的配置:<bean>
- 加载properties文件的配置:<context:property-placeholder>
- 组件扫描的配置:<context:component-scan>
- 引入其他文件:<import>
注解 | 说明 |
@Configuration | 用于指定当前类是一个 Spring 配置类,当创建容器时会从该类上加载注解 |
@ComponentScan | 用于指定 Spring 在初始化容器时要扫描的包,作用和在 Spring 的 xml 配置文件中的 一样 |
@Bean | 使用在方法上,标注将该方法的返回值存储到 Spring 容器中 |
@PropertySource | 用于加载.properties 文件中的配置 |
@Import | 用于导入其他配置类 |