Spring的IOC的注解开发的入门
1.创建web项目,引入jar包
然后引入Spring配置文件
创建applicationContext.xml
然后在xml中引入约束:使用注解开发引入context的约束
创建好接口和实现类
此时的@Component(“userDao”)相当于<bean id=“userDao” class=“com.itheima.spring.demo1.UserDaoImpl”,自己的理解相当于在xml中配置了这一条语句
2.注解方式设置属性的值
如果使用注解方式设置属性的值可以没有set的方法
属性如果没有set方法,需要将属性注入的注解添加到set方法
属性如果没有set方法,需要将属性注入的注解添加到属性上
Spring的IOC的注解的详解
1.@Component:组件
用来修饰一个类,将这个类交给Spring管理
这个注解有三个衍生注解(功能)类似,本来service层,dao层也可以用@Component这个注解去修饰,但是后面发现这样做分层结构不太明显,后来提供这三个衍生注解修饰我们的类,但是这三个目前来讲跟我们的@Component的功能是一致的。但后面会对每一层的注解提供更多的属性,扩展的
@Controller:web层
@Service:service层
@Respository:dao层
属性注入的注解
普通属性:@Value :设置普通属性的值
对象类型属性:@Autowired:设置对象的属性的值。但是按照类型完全属性注入。
但是我们开发习惯是按照名称完成属性注入的:此时必须让Autowired注解和@Qualifier一起使用完成按照名称输入
还有一个替代的注解@Resource :完成对象类型的属性的注入,按照名称完成属性注入 (对象类型一般用这个)
‘
为什么userdao这个属性就是userDaoImpl的实例化对象呢,在这里由于
@Repository(“UserDao222”)是写在UserDAOImpl这个类上的,实例化对象就是UserDAOImpl,@Autowired或@Respository后便会根据类型名字给这个属性赋值上这个名字对应的对象。
Bean的其他的注解
如生命周期,init method,还有结束时调用的方法destroy-method
@PostConstruct//相当于init-method
@PreDestroy //相当于destroy-method
Bean的作用范围的注解
@Scope:作用范围 下面两个比较常用
singleton:默认单类
prototype:多例 //这个用在struct2
request
session
globalsession
IOC的XML和注解开发比较
适用场景:
XML:可以适用于任何的场景
好的原因:结构清晰,维护方便,这个类用到哪些属性了,打开文件一目了然,若使用注解则要打开源代码去看
注解:有些地方用不了,若这个类不是自己提供的
开发方便:
还有一种开发:XML和注解的整合开发:各取所长,打开xml就可以知道哪些类被spring管理了,注解属性注入很方便,使用xml管理Bean,注解完成属性的注入,就不用xml开发时的get,set方法的写入了