Spring

时光毁灭记忆、已成空白 提交于 2020-03-01 23:12:16

一、@Autowired

spring2.5引入@Autowired 注解。用于对类的成员变量,方法及构造函数进行注入。取代了get、set方法: 

// create and configure beans
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");

// retrieve configured instance
PetStoreService service = context.getBean("petStore", PetStoreService.class);

// use configured instance
List<String> userList = service.getUsernameList();

注解形式

@Autowired             默认byType形式
@Autowired @Qualifier("beanId")  使用byName形式
@Autowired( required=false)     使用byType形式,注入值不存在,可以为null

二、@Resource

JSR-250 注解

注解形式

@Resource             默认byName形式
@Resource(name="loginService")   使用byName形式
@Resource(type="")         使用byType形式

注意:
@Resource 默认byName 注入。name可以是字段名。当找不到匹配的bean才按类型装配。

三、细节问题

@Autowired ( autowire属性 )

byType       发现多个bean或没有,抛异常
byName      指定名称,没有,抛异常
Contructor     没有,抛异常
autodetect     决定默认情况下,用byType还是Contructor

@Resource

@Autowired 类似,不过@Resource 默认按照名称式匹配,匹配不成功可以按照类型匹配,当然如果指定了name,则只按名称进行匹配。

@Service
使用组件扫描时,默认将使用此注解的类的第一字母小写作为bean的id生成bean。可以使用@Service("myName"),指定要生成的bean的id。

@Scope
在配置bean时,可以对其作用域进行限制。 默认为singleton,单一实例。也可以设置作用域为 prototype,任意数量的对象实例。

<!-- A bean definition with singleton scope -->
<bean id="..." class="..." scope="singleton">
    <!-- collaborators and configuration for this bean go here -->
</bean>

除了,在配置文件中进行配置。还可以使用注解:

@Service("userXxx")@Scope("prototype")

public class UserServiceImpl implements UserXxx {

……

}

在添加注解的相应的类中,如果想初始化或销毁某个方法,我们可以直接在方法上添加注解,如下:

@PostConstruct

public void addItem() {

System.out.println("初始化方法");

}

``` @PreDestroy

public void testItem() {

System.out.println("释放资源");

} ```

原文

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!