基于注解的IOC
IOC,控制反转,除了基于applicationContext.xml
配置文件实现,还可以基于注解实现。
入门程序
开启注解扫描
<context:component-scan base-package="wangfei910.Demo04"/>
<!-- 也可以这样写,这是扫描package gongfukangee下的所有内容 -->
<context:component-scan base-package="wangfei910"/>
编写持久层和业务层
-
Dao
public interface UserDao { public void save(); } //@Repository 将UserDaoImpl 控制权交给Spring @Repository(value = "userDao") public class UserDaoImpl implements UserDao { @Override public void save() { System.out.println("注入成功、保存信息"); } }
-
Service
public interface UserService04 { public void sayhello(); } @Component(value = "userService04") public class UserServiceImpl04 implements UserService04 { //给name属性注入“王五” 的值,setName 方法可以省略不写 @Value(value = "王五") private String name; @Autowired @Qualifier(value = "userDao") private UserDao userDao; @Override public void sayhello() { System.out.println("Demo04: Hello Spring! "+name); userDao.save(); } }
-
类的注解
@Component(value = "userService04")
组件注解,标记类,相当于<bean id="userService" class="gongfukangee.Demo04.UserServiceImpl04">
-
方法的注解
@Autowired 按照类型自动装配 @Qualifier 按照名称注入 名称为 UserDaoImpl.java 中的 [ @Repository(value = "userDao")]
也可以单独使用Java提供的,Spring支持的按名称注入的注解
@Resource(name="userDao")
-
Bean管理中的常用注解
-
@Component
组件,作用在类上Spring中提供了
@Component
的三个衍生注解,功能目前来讲是一致的@Controller
:WEB层@Service
:业务层@Repository
:持久层
-
属性注入的注解
-
注入普通类型
@value
-
注入对象类型:
-
@Autowired
:默认按类型自动装配@Qualifier
:强制使用名称注入 -
@Resource
:Java提供的注解,属性使用name属性
-
-
Bean自身相关注解
-
Bean作用范围注解
注解为
@Scope(value="prototype")
:singleton
单例prototype
多例 -
Bean生命周期注解
@PostConstruct
相当于init-method
@PreDestroy
相当于destroy-method
下一篇:
Spring学习笔记[4]之AOP[面向切面编程] https://blog.csdn.net/Rabbit_Judy/article/details/81842572