`
ponlya
  • 浏览: 164767 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Spring3之 bean 注解

阅读更多

小记下,spring注解相关:

com.spring305.test.annotations.env.Env1.java

 

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

@Component
//@Configuration
public class Env1 {

	private int id;
	@Value("test name value in env1 class")
	private String name;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

 com.spring305.test.annotations.env.Env2.java

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.stereotype.Component;

//@Component
@Configuration
//@Import({com.spring305.test.annotations.env.Env1.class})
public class Env2 {
	
/**
 一、@Autowire默认按照类型进行注入按类型装配依赖对象
	,若允许null值,可以设置它的required属性为false。
	如果想使用按名称装配,可以结合@Qualifier注解一起使用
	@Autowired @Qualifier("XXX")这样就是按照名称进行装配
	@Autowired(required=true)必须注入值,不能为null
	
	
二、@Resource 和@Autowired一样,也可以标注在字段或属性的setter方法上,但它默认是按名称装配。
	名称可以通过@Resource的name属性指定, 如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找对象,
	当注解标注在属性的setter方法上,即默认取属性名作 为bean名称寻找依赖对象。当没有使用name属性时,如果按照字段名找不到bean,
	就会转而使用按类型装配的方式进行查找;但当使用了name属 性,只能按照指定的name查找bean,当找不到相应的bean时,就会抛异常。
	@Resource(name="xmlBeanx")
	
二者亦有区别:
	@Autowired applies to fields, constructors, and multi-argument methods, allowing for
	narrowing through qualifier annotations at the parameter level. By contrast, @Resource is
	supported only for fields and bean property setter methods with a single argument
*/
	//@Autowired(required=true)
	private  Env1 env1;
	@Resource(name="env1")
	private Env1 env11;

	public Env1 getEnv1() {
		return env1;
	}
	
	@Autowired
	public void setEnv1(@Qualifier("env1") Env1 env1) {
		this.env1 = env1;
	}

	public Env1 getEnv11() {
		return env11;
	}

	public void setEnv11(Env1 env11) {
		this.env11 = env11;
	}

	@PostConstruct
    public void populateMovieCache() {
		System.out.println(Env2.class+"_"+"@populateMovieCache");
        // populates the movie cache upon initialization...
    }
    @PreDestroy
    public void clearMovieCache() {
    	System.out.println(Env2.class+"_"+"@clearMovieCache");
        // clears the movie cache upon destruction...
    }

}

 测试:

com.spring305.test.annotations.AnnotationTest2.java

@Test
	public void testEnv(){
		AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Env2.class,Env1.class);
		Env2 bean = ctx.getBean("env2",Env2.class);
		Env1 env1 = ctx.getBean("env1",Env1.class);
		//Env1 env2 = ctx.getBean("com.spring305.test.annotations.env.Env1",Env1.class);
		System.out.println(bean.getEnv1().getName());
		System.out.println(bean.getEnv11().getName());
		System.out.println(env1.getName());
		//System.out.println(env2.getName());
	}

 JSR 330 似乎更加丰富些。。先记下这几个,待补充。。。

 

分享到:
评论

相关推荐

    spring3零配置注解实现Bean定义

    标题《spring3零配置注解实现Bean定义》中蕴含的知识点主要包括Spring框架中的Bean定义配置方法的演进,特别是从Spring 2.5到Spring 3版本的过渡过程中,对于注解方式实现Bean定义的支持如何被引入和优化。...

    Spring实例化Bean顺序

    3. **@Order和Priority注解**:Spring提供了一个名为`@Order`的注解,可以用于控制Bean的实例化顺序。值越小,Bean优先级越高,先被实例化。此外,`@Priority`注解常用于AOP切面,用于指定切面的执行顺序。 4. **...

    spring在@Bean注解中initMethod调用方法异步

    在Spring框架中,`@Bean`注解是一个关键的组件,用于声明一个方法将返回的对象作为Spring容器中的bean。在`@Bean`中定义`initMethod`属性,可以指定该bean初始化时需要调用的方法。当`initMethod`被设置为异步执行,...

    Spring Bean创建初始化流程.docx

    3. **完成Bean工厂初始化**: 在`refresh()`方法内部,调用`finishBeanFactoryInitialization(beanFactory)`。这一步是为了确保所有单例Bean被预先实例化。 4. **预实例化单例Bean**: 进入`...

    spring中的bean

    3. **Java配置类**:Spring 3.0引入了Java配置,允许我们使用Java类来配置Bean。 ```java @Configuration public class AppConfig { @Bean public MyBean myBean() { return new MyBean(); } } ``` 这里的`@Bean...

    spring3.x注解

    Spring 3.x 注解应用详解 Spring 3.x 框架引入了依赖注入的注解,改变了传统的 XML 配置方式,提供了一种更加灵活和方便的依赖配置方式。下面对 Spring 3.x 的注解应用进行详细的介绍。 一、属性装配 在 Spring ...

    spring bean XML配置入门

    在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...

    详解Spring 中如何控制2个bean中的初始化顺序

    例如,可以使用 Spring 的 @Order 注解来指定 bean 的初始化顺序,也可以使用 Spring 的生命周期接口(如 InitializingBean)来控制 bean 的初始化顺序。 总结 控制 2 个 bean 的初始化顺序是一个常见的问题,本篇...

    线程中获取spring 注解bean

    当需要在线程中获取Spring注解的bean时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...

    spring依赖注入bean

    在 Web 应用中,Spring 通常作为 Servlet 容器的一部分工作,例如 Tomcat 或 Jetty,通过 XML 配置文件或注解来定义 Bean 的配置。然而,在非 Web 的 Java 应用程序,如桌面应用或服务,我们同样可以利用 Spring 的 ...

    spring bean的生命周期

    - **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...

    Spring bean 动态注册,jar包热替换

    Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...

    Spring中与Bean相关的接口

    在Bean的定义中,我们可以使用`@Component`、`@Service`、`@Repository`和`@Controller`等组件注解,它们是Spring的 stereotype annotations(标准注解)。这些注解简化了Bean的声明,使得Spring可以通过扫描包路径...

    spring创建bean简单示例

    Spring提供了多种注解,如`@Component`、`@Service`、`@Repository`和`@Controller`,它们可以用来标记Bean类,自动注册到Spring容器。同时,使用`@Autowired`注解可以完成依赖注入。 ```java @Service public ...

    Spring定义bean的三种方式和自动注入

    在Spring框架中,管理Bean的方式主要有三种:XML配置、注解配置和Java配置。下面将详细介绍这三种方式以及Spring的自动注入机制。 1. **基于XML的Bean定义**: 在XML配置中,我们通常在`applicationContext.xml`...

    Spring之核心容器bean

    Spring还提供了自动装配功能,通过@Autowired注解,容器会自动寻找合适的bean进行注入,无需显式指定bean的ID。这使得配置更加简洁,特别是在使用大量bean的情况下。 **总结** Spring的核心容器bean是其强大功能的...

    Spring中关于Bean的管理的课件

    在Spring框架中,Bean的管理是其核心特性之一,它涉及到Bean的创建、初始化、装配以及销毁等整个生命周期过程。本课件主要涵盖了以下几个关键知识点: 1. **控制反转(IoC)和依赖注入(DI)**:Spring的核心设计...

    Spring的Bean配置

    综上所述,Spring的Bean配置是其核心机制之一,它涉及到IoC和DI原则的应用,以及多种配置方式的选择,如XML、注解和Java配置。理解并熟练掌握这些概念和实践,对于有效管理Java应用的复杂性至关重要。在实际项目中,...

    spring IOC反射装载bean

    在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计原则,它将对象的创建和管理交给了容器来处理。...通过XML配置或注解,Spring能够灵活地控制Bean的生命周期,从而提高代码的可测试性和可维护性。

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    然而,在某些情况下,我们可能需要在非Spring注解的类中访问Spring容器中的Bean,或者在这些类中使用YAML配置文件中的配置信息。本篇将详细介绍如何在这样的场景下实现这一目标。 首先,让我们来理解如何在非Spring...

Global site tag (gtag.js) - Google Analytics