Spring注解开发
-
Spring原始注解
-
Spring是轻代码而重配置的框架,配置比较繁重影响开发,所以注解开发算是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率
-
该原始注解主要替代的配置
-
注解类型及说明
-
注解 说明 @Component 使用在类上用于实例化Bean @Controller 使用在web层类上用于实例化Bean @Service 使用在service层类上用于实例化Bean @Repository 使用在dao层类上用于实例化Bean @Autowired 使用在字段上用于根据类型进行依赖注入 @Qualifier 结合@Autowired一起使用用于根据名称进行依赖注入 @Resource 相当于@Autowired+@Qualifier,按照名称进行注入 @Value 注入普通属性 @Scope 标注Bean的作用范围 @PostConstruct 使用在方法上标注该方法是Bean的初始化方法 @PreDestory 使用在方法上标注该方法时Bean的销毁方法
-
-
原始配置
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"></bean> <bean id="userService" class="com.itheima.service.impl.UserServiceImpl"> <property name="userDao" ref="userDao"></property> </bean>
-
如何取消这里的userDaoImpl的spring和UserServiceImpl来使用注解替换
package com.itheima.dao.impl; import com.itheima.dao.UserDao; import org.springframework.stereotype.Component; // 相当于<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"></bean> //@Component("userDao") @Repository("userDao") public class UserDaoImpl implements UserDao { public void save() { System.out.println("save running.."); } }
package com.itheima.service.impl; import com.itheima.dao.UserDao; import com.itheima.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; //<bean id="userService" class="com.itheima.service.impl.UserServiceImpl"></bean> @Service("userSerivce") //@Component("userSerivce") public class UserServiceImpl implements UserService { //<property name="userDao" ref="userDao"></property> @Autowired // 按照数据类型从spring容器中类型进行匹配的 // @Qualifier("userDao") 这里同样也可以省去 如果 不想按照类型匹配则可以通过id进行匹配并且此处的Autowired() 和 Qulifier // 后者这里直接使用@Resource(name="userDao") 相当于Autowired() 和 Qulifier() private UserDao userDao; // public void setUserDao(UserDao userDao) { this.userDao = userDao; } // 这里注意如果使用xml配置的这里一定要写上 //如果使用spring注解则这里可以不写 public void save() { userDao.save(); } } // 此时执行会发现报错 原因时spring还不知道这些需要进行spring的注解扫描即配置组件扫描
-
-
配置组件扫描
-
使用注解开发时候需要在applicationContext.xml中进行最近扫描
<context:component-scan base-package="com.itheima"></context:component-scan>
-
-
注入普通数据类型
@Value("itcast") private String driver; //在这里我们 的@vaue()用途 @Value("${jdbc.driver}") private String driver;
-
单例多例的注入
@Service("userSerivce") //@Component("userSerivce") @Scope("singleton") // 单例 //@Scope("prototype") // 多例 public class UserServiceImpl implements UserService {}
-
初始化注解,销毁方法
-
@PostConstruct //对象初始化方法 @PreDestroy //对象销毁方法
-
-
Spring新注解
-
注解 说明 @Configuration 用于指定当前类是一个Spring配置容器,当创建容器时会从该类上加载注解 @ComponentScan 用于指定Spring在初始化容器时需要扫描的包,作用和Spring的xml配置文件中<context:component-scan base-package=“com.itheima”/>一样 @Bean 使用在方法上,标注将该方法的返回值存储在Spring容器中 @PropertySource 用于加载.properties文件中的配置 @Import({x,x,x,x}) 用于导入其他配置类 是一个数组
-