spring 注解

原创 2012年03月26日 13:24:37

注解配置

<context:annotation-config/>和
<context:aomponent-scan base-package="需要实现注入的类所在包"/>
<context:annotationconfig/>隐式地向spring容器注册
  AutowiredAnnotationBeanPostProcessor、
CommonAnnotationBeanPostProcessor、
PerSistenceAnnotationBeanPostProcessor、
RequiredAnnotationBeanPostProcessor、
 这四个BeanPostProcessor

声明bean

@Component 泛指组件

泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Repository 持久层

持久层组件,用户标注数据库访问组件。(例如:Dao组件)

@Service 业务层

业务层组件。(例如:Service组件)

@Controller 控制层

控制层组件。(例如:struts的Action)
例子:
@Service
public class MyService implements IMyService{
}
@Repository("myDao")
public class MyDao implements IMyDao{
}

@Scope  定义bean作用范围

1、singleton :定义bean的范围为每个Spring容器一个实例(默认值)
2、Prototype :允许 多次实例化(使用一次创建一次实例)
3、request :定义bean的范围是HTTP请求。只有在使用web能力的 Spring上下文是才有效
4、session :定义bean的范围是HTTP会话。只有在使用web能力的 Spring上下文是才有效
5、global-session :定义bean的范围是全局HTTP会话。只有在portlet上下文中才有效
demo
@Scope("session")  
@Component()  
public class UserSessionBean implements Serializable {  
    

注入bean

@Autowired (建议使用@Resource)

可以对成员变量、方法和构造函数进行标注,完成自动装配的工作。
(注:要使@Autowired能够工作,需要在配置文件中加入以下代码)
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
例子:
public class UserServiceImpl implements UserService {  
    @Autowired  
    private UserDao userDao;  
    ...  
}  

public class UserServiceImpl implements UserService {  
    private UserDao userDao;  
    @Autowired  
    public void setUserDao(UserDao userDao) {  
        this.userDao = userDao;  
    }  
    ...  
}  

@Qualifier 制定注入bean的名称

@Qualifier只能和@Autowired结合使用,是对@Autowired有益的补充。
例子:
@Autowired
public void setUserDao(@Qualifier("userDao") UserDao userDao) {
	this.userDao = userDao;
}

@Resource  代替Spring的@Autowired注解

@Resource的作用相当于@Autowired,只不过@Autowired按照byType自动注入,而@Resource默认按照byName自动注入。
@Resource两个属性:1、name   2、type 默认byName自动注入策略。

@PostConstruct 

bean初始化之后被Spring容器执行。
典型应用:往bean中注入父类中的属性,而又无法重写父类的属性或者和属性的setter方法。
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
	private SessionFactory mySessionFacotry;
	@Resource
	public void setMySessionFacotry(SessionFactory sessionFacotry) {
		this.mySessionFacotry = sessionFacotry;
	}
	@PostConstruct
	public void injectSessionFactory() {
		super.setSessionFactory(mySessionFacotry);
	}
}

@PreDestroy

Bean初始化之后被Spring容器执行。
例子:
// 相当于在XML中配置了destroy-method
@PreDestroy
public void destory() {
    System.out.println("destory.");
}







spring入门及常用注解的使用

目前java主流的开源框架无论是ssh还是ssi,除了spring,其他的框架都有可替换的框架struts2和springmvc,hibernate和ibatis(mybatis),这里我们不讨论其他...
  • yy6090
  • yy6090
  • 2016年09月18日 11:17
  • 1003

Spring常用注解(讲解的通俗易懂,很透彻)

使用注解来构造IoC容器 用注解来向Spring容器注册Bean。需要在applicationContext.xml中注册。 如:在base-package指明一个包 1 context:compo...
  • archer119
  • archer119
  • 2016年06月07日 20:30
  • 5778

Spring+junit4 实现注解测试原理解析。

背景:   我们在使用Spring集成的项目进行开发的时候,需要在不依赖web容器启动的时候去进行单元测试,而Spring为我们提供了相应单元测试框架,在spring 的org.spring...
  • zhouzhiwengang
  • zhouzhiwengang
  • 2016年11月07日 17:46
  • 1640

JAVA 注解的学习和对Spring注解的理解

从前年开始使用spring和hibernate,mybatis等框架时,就转到注解来了。直到前些时,突然对注解开始好奇起来。为什么写注解就可以了?不需要大量配置文件呢?于是我查看了一些资料,对注解有了...
  • Fly_Sky520
  • Fly_Sky520
  • 2014年03月19日 15:00
  • 17287

扩展spring注解,读取配置文件

通过扩展spring,在service层写注解,直接读取属性值。在spring容器开启时,直接扫描注解并设置到service的属性上。注意:controller得不到值,必须在service层。 因为...
  • XMZ_JAVA
  • XMZ_JAVA
  • 2017年01月31日 11:49
  • 906

注解和注释以及Spring和SpringMVC常用的注解

1.两者区别注解 :参与代码编译,以@开头的。它是给应用程序看的,单独使用注解毫无意义,一定要跟工具一起使用,这个所谓的工具实际就是能读懂注解的应用程序 注释 :对代码没有影响。对代码起到解释、说...
  • u012661010
  • u012661010
  • 2017年06月19日 10:46
  • 1639

Spring中bean的初始化和销毁之前的方法XML和注解的两种形式

XML形式 package cn.xy; public class StudentServiceImpl {  private StudentDao studentDao;  public ...
  • woshixuye
  • woshixuye
  • 2012年09月05日 20:53
  • 6714

Spring 自己实现注解数据验证

[Spring MVC] - Annotation验证 使用Spring MVC的Annotation验证可以直接对view model的简单数据验证,注意,这里是简单的,如果mod...
  • zhaoshuliok
  • zhaoshuliok
  • 2017年04月25日 22:13
  • 860

史上最全的java spring注解,没有之一

注解是个好东西,但好东西我们也是看见过,整理过,理解过,用过才知道好。不求我们每个都记住,但求保有印象,在需要的时候能提取出来再查找相关资料,平时工作就不会显得那么被动了。 1.@Configu...
  • achenyuan
  • achenyuan
  • 2017年05月27日 23:23
  • 1147

spring扫描注解

在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的Java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这...
  • u010343544
  • u010343544
  • 2016年12月30日 15:10
  • 2043
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring 注解
举报原因:
原因补充:

(最多只允许输入30个字)