Spring(三)-注解IoC
IOC操作Bean管理(基于注解方式)
什么是注解?
(1)注解是代码特殊标记,格式: @注解名称(属性名称=属性值)
(2)使用注解,注解作用在类上面 方法上面 属性上面
(3)目的: 为了简化xml配置
Spring针对Bean管理中创建对象提供注解Bean管理(创建对象)
(1)@Component
(2)@Service 业务层
(3)@Controller 表现层
(4)@Repository 持久层
- 上面四个注解功能是一样的 都可以用来创建bean实例
基于注解创建对象
引入依赖
spring-aop-5.2.6.RELEASE.jar
开启组件扫描
使用注解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24//在注解里面value属性值可以省略不写,
//默认值是类名称,首字母小写
//UserService -- userService
//@Component(value = "userService") //<bean id="userService" class=".."/>
public class UserService {
private String name;
//定义dao类型属性
//不需要添加set方法
//添加注入属性注解
// @Autowired //根据类型进行注入
// @Qualifier(value = "userDaoImpl1") //根据名称进行注入
// private UserDao userDao;
//@Resource //根据类型进行注入
//根据名称进行注入
private UserDao userDao;
public void add() {
System.out.println("service add......."+name);
userDao.add();
}
}
基于注解方式实现属性注入(集合类型只能通过xml)
(1)@Autowired: 根据属性类型自动装配
把service和dao对象创建,在service和dao类添加创建对象注解
把service注入dao对象,在service类添加属性,在属性上面使用注解
set方法不是必须的
(2)@Qualifier:根据属性名称进行注入
- 需要和@Autowired一起使用
(3)@Resource: 可以根据类型注入 可以根据名称注入
- @Resource(name=’’’’)
(4)@Value:注入普通类型属性
完全注解开发
1
2
3
4
5//作为配置类,替代xml配置文件
public class SpringConfig {
}测试代码
1
2
3
4
5
6
7
8
9
public void testService2() {
//加载配置类
ApplicationContext context
= new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = context.getBean("userService", UserService.class);
System.out.println(userService);
userService.add();
}
用于改变作用范围的
作用和在bean标签中使用scope标签实现的功能一样
@Scope
**作用:**用于指定bean的作用范围
属性:value:用于指定范围的取值: singleton prototype 默认单例
和生命周期相关的(了解)
作用就和在bean 标签中适用init-method 和destroy-method的作用一样
@PreDestroy
用于指定销毁方法
@PostConstruct
用于指定初始化方法
评论