注解方式设置属性的值
在我们IOC基于xml属性注入的方式中有(一般推荐set方法)
构造方法注入普通值:<constructor-arg>的使用
set方法注入普通值:<property>的使用 注入对象值:ref的使用
SPEL方式注入普通值与对象值 #{SPEL}
P名称空间方式注入普通值与对象值
在我们IOC基于注解方式开发中
- 普通属性:Value
- 对象属性:AutoWired :设置对象类型的属性的值,按照类型注入。习惯是按照名称完成属性注入,那么和以下注解配合使用@Qualifier(value="userDao2222")
- 实际开发中:@Resource : 完成对象类型的属性注入,按照名称注入
可以没有set方法,如果没有提供set方法,就把注解加在属性上,否则就set方法上
package spring.day2.demo1; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component("userDao") // 相当于<bean id="userDao" class="spring.day2.demo1.UserDaoImp1"> public class UserDaoImp1 implements UserDao { //@Value("张三") private String name; @Value("李四") public void setName(String name) { this.name = name; } @Override public void save() { System.out.println("userdao的save方法已经执行......."+name); } }
注解详解
@Component:组件,目前与其衍生注解是一样的,推荐使用衍生注解,使其结构更加清晰。
修饰一个类,将这个类交给spring管理,其衍生注解如下:
@Controller:web层
@Service:service层
@Repository:dao层
属性注入的注解
普通属性:@Value()
对象属性:@Autowired设置对象类型的属性的值,按照类型注入。习惯是按照名称来进行注入,所以与@Qualifier(value="userDao2222")一起使用完成按名称注入
实际开发中:使用@Resource(name="")来完成按名称注入对象类型,但是@Resource(name="")不是Spring框架下的,是实现javax.annotation.Resource的规范
Bean的生命周期注解(了解)
@PostConstruct 初始化 相当于xml中的init-method
@PreDestroy 销毁 相当于xml中的destroy-method
Bean的作用范围注解
@Scope("")
双引号里面可以填
- singleton 单例
- prototype 多例
- request
- session
- globalsession