spring注解方式注入bean
2021-07-16 10:06
标签:http 初始 string source 数据类型 注解 nts img ack 用注解的方式注入bean,spring的配置文件也要增加一些约束和导入注解所在的包 applicationContext.xml 用注解注入的bean类PersonImple.java Person接口 Dao_demo接口 Dao_demoImple.java 测试类Test.java spring注解方式注入bean 标签:http 初始 string source 数据类型 注解 nts img ack 原文地址:https://www.cnblogs.com/xiaostudy/p/9534697.html 1 xml version="1.0" encoding="UTF-8"?>
2 beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 context:component-scan base-package="com.xiaostudy.service">context:component-scan>
11 context:component-scan base-package="com.xiaostudy.dao">context:component-scan>
12 beans>
1 package com.xiaostudy.service;
2
3 import javax.annotation.PostConstruct;
4 import javax.annotation.PreDestroy;
5 import javax.annotation.Resource;
6
7 import org.springframework.beans.factory.annotation.Value;
8 import org.springframework.context.annotation.Scope;
9 import org.springframework.stereotype.Component;
10 /*
11 * bean注入
12 * 1、@Component("id")
13 * 2、WEB:
14 * @Controller("id") web
15 * @Service("id") service
16 * @Repository("id") dao
17 */
18 @Component("person")
19 /*
20 * bean作用域
21 * @Scope("singleton") 单例(也是默认)
22 * @Scope("prototype") 每new一次都是新的对象
23 */
24 @Scope("prototype")
25 public class PersonImple implements Person {
26 /*
27 * bean参数注入
28 * 1、普通参数(也就是说那些基本数据类型)
29 * 在参数上面或者在相应的set方法 @Value("值")
30 * 2、引用参数
31 * 2.1按照类型注入:@Autowired
32 * 2.2按照名称注入:@Autowired @Qualifier("id")
33 * 2.3按照名称注入:@Resource
34 *
35 */
36 //@Resource
37 private Dao_demoImple dao_demo;
38 @Value("xiaostudy")
39 private String name;
40
41
42 public String getName() {
43 return name;
44 }
45
46 public void setName(String name) {
47 this.name = name;
48 }
49
50 public Dao_demoImple getDao_demo() {
51 return dao_demo;
52 }
53
54 @Resource
55 public void setDao_demo(Dao_demoImple dao_demo) {
56 this.dao_demo = dao_demo;
57 }
58 /*
59 * bean初始化方法注解
60 * @PostConstruct
61 */
62 @PostConstruct
63 public void init() {
64 System.out.println("init()>>>>>>");
65 }
66
67 /*
68 * bean销毁注解
69 * @PreDestroy
70 */
71 @PreDestroy
72 public void destroy() {
73 System.out.println("destroy()>>>>>");
74 }
75
76 }
1 package com.xiaostudy.service;
2
3 public interface Person {
4
5 }
1 package com.xiaostudy.dao;
2
3 public interface Dao_demo {
4
5 }
1 package com.xiaostudy.service;
2
3 import org.springframework.beans.factory.annotation.Value;
4 import org.springframework.stereotype.Component;
5
6 import com.xiaostudy.dao.Dao_demo;
7 @Component("dao_demo")
8 public class Dao_demoImple implements Dao_demo {
9
10 private String name;
11
12 public String getName() {
13 return name;
14 }
15
16 @Value("demo")
17 public void setName(String name) {
18 this.name = name;
19 }
20
21 public void add() {
22 System.out.println("add>>>>>>");
23 }
24
25 }
1 package com.xiaostudy.service;
2
3 import org.springframework.context.ApplicationContext;
4 import org.springframework.context.support.AbstractApplicationContext;
5 import org.springframework.context.support.ClassPathXmlApplicationContext;
6
7 import com.xiaostudy.dao.Dao_demo;
8 import com.xiaostudy.service.Person;
9
10 public class Test {
11
12 public static void main(String[] args) {
13 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
14 Person person = ac.getBean("person", Person.class);
15 System.out.println(person);
16 PersonImple pi = (PersonImple)person;
17 System.out.println(pi.getName());
18 Dao_demoImple dao_demo = pi.getDao_demo();
19 System.out.println(dao_demo);
20 dao_demo.add();
21 System.out.println(dao_demo.getName());
22 /*Person person1 = ac.getBean("person", Person.class);
23 Person person2 = ac.getBean("person", Person.class);
24 System.out.println(person1);
25 System.out.println(person2);
26 ((AbstractApplicationContext) ac).close();*/
27 }
28
29 }