说明
使用注解形式,必须得要引入aop的依赖包 在配置文件当中,还得要引入一个context约束
<?xml version="1.0" encoding="UTF-8"?>
< 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" >
< context: annotation-config/>
</ beans>
bean的实现
之前都是使用 bean 的标签进行bean注入,但是实际开发中,我们一般都会使用注解
配置扫描哪些包下的注解
<?xml version="1.0" encoding="UTF-8"?>
< 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" >
< context: component-scan base-package = " site.duing.pojo" />
< context: annotation-config/>
</ beans>
在指定包下编写类,增加注解
@Component ( "user" )
public class User {
private String name = "孙悟空" ;
public String getName ( ) {
return name;
}
}
测试
@Test
public void test ( ) {
ApplicationContext context = new ClassPathXmlApplicationContext ( "applicationContext.xml" ) ;
User user = context. getBean ( "user" , User. class ) ;
System. out. println ( user. getName ( ) ) ;
}
属性注入
可以不用提供set方法,直接在直接名上添加@value(“值”)
@Component ( "user" )
public class User {
@Value ( "孙悟空" )
private String name;
public String getName ( ) {
return name;
}
}
如果提供了set方法,在set方法上添加@value(“值”)
@Component ( "user" )
public class User {
private String name;
@Value ( "猪八戒" )
public void setName ( String name) {
this . name = name;
}
public String getName ( ) {
return name;
}
}
测试结果不变
衍生注解
@Component三个衍生注解:为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样
@Controller:controller层 @Service:service层 @Repository:dao层 写上这些注解,就相当于将这个类交给Spring管理装配了
作用域
@Scope
singleton:单例模式,默认的。关闭工厂 ,所有的对象都会销毁 prototype:多例模式。关闭工厂 ,所有的对象不会销毁。内部的垃圾回收机制会回收
@Component ( "user" )
@Scope ( "singleton" )
public class User {
@Value ( "孙悟空" )
private String name;
public String getName ( ) {
return name;
}
}
小结
下一篇:《Spring学习(7)——代理模式》