Spring基础(八):注解方式创建对象IOC_天天观热点

来源: 腾讯云 时间:2022-12-26 13:17:26

注解方式创建对象IOC

一、注解方式创建对象IOC

导入依赖 aop

@Component 放在类上,用于标记,告诉spring当前类需要由容器实例化bean并放入容器中


(资料图片仅供参考)

该注解有三个子注解

@Controller 用于实例化controller层bean

@Service 用于实例化service层bean

@Repository 用于实例化持久层bean

当不确定是哪一层,就用Component

这几个注解互相混用其实也可以,但是不推荐

1、在applicationContext.xml中配置开启注解扫描

        

2、在类上添加注解,让spring容器给我们创建bean实例并存储于容器中

package com.lanson.bean;import org.springframework.stereotype.Component;/** * @Author: Lansonli * @Description: MircoMessage:Mark_7001 */@Component(value = "user1")public class User {}

3、测试代码

package com.lanson.test;import com.lanson.bean.User;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * @Author: Lansonli * @Description: MircoMessage:Mark_7001 */public class Test1 {    @Test    public void testGetBean(){        ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");        User user = context.getBean("user1", User.class);        System.out.println(user);    }}

4、组件扫描配置注解识别

                                        

二、注解方式依赖注入DI

@Autowired 根据属性数据类型自动装配

@Qualifier 根据属性名称注入依赖

@Resources 可以根据类型,也可以根据名称注入

@Value 注入普通数据类型(8+String)

项目结构如下

applicationContext.xml中配置包扫描和读取属性配置文件

Dao层接口

实现类

让容器扫描 Service层,实例化对象接口

实现类

package com.lanson.service.impl;import com.lanson.dao.UserDao;import com.lanson.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Service;import javax.annotation.Resource;/** * @Author: Lansonli * @Description: MircoMessage:Mark_7001 */@Servicepublic class UserServiceImpl implements UserService {    /*    *@Autowired    * 根据类型到容器中去寻找对应的对象,找到后给当前属性赋值    * 不需要依赖 set方法    * 属性类型可以是接口,会自动匹配对应的实现类对象    * @Autowired配合 @Qualifier,可以通过名称指定注入的对象    *    * @Resource 如果不配置name 那么就是根据类型注入    * @Resource(name="userDaoImplB") 配置name,就是根据名称注入    *    *    * @Resource  是JDK中javax包的注解    * @Autowired 和 @Qualifier 是spring中的注解    *    * @Value 可以个普通属性赋值    * @Value 可以使用${}这种表达式获取系统的变量值    *        或者是.properties属性配置文件中的值    *    * */    //@Autowired    //@Qualifier("userDaoImplA")    //@Qualifier("userDaoImplB")    //private UserDao userDao ;    @Resource(name="userDaoImplB")    private UserDao userDao ;    @Value("${username}")    private String sname;    @Value("boy")    private String sgender;    @Value("${age}")    private Integer sage;    @Override    public void add() {        System.out.println("userServiceImpl add ... ... ");        System.out.println(sname);        System.out.println(sgender);        System.out.println(sage);        userDao.add();    }}

测试代码

package com.lanson.test;import com.lanson.service.UserService;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * @Author: Lansonli * @Description: MircoMessage:Mark_7001 */public class Test1 {    @Test    public void testGetBean(){        ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");        UserService userService = context.getBean("userServiceImpl", UserService.class);        userService.add();    }}

三、完全使用注解

创建配置类,替代XML配置文件

测试代码

@Testpublic void testGetBean2(){    ApplicationContext context=new AnnotationConfigApplicationContext(SpringConfig.class);    UserServiceImpl userService = context.getBean("userServiceImpl", UserServiceImpl.class);    userService.add();}

上一篇:

下一篇:

X 关闭

热门推荐

小学大班化的危害|看热讯

2022-12-26   万能网

如何查询考体育成绩

2022-12-26   万能网

全球首架C919今天开启100小时验证飞行

2022-12-26   央视新闻客户端

北京推出首批6个微度假目的地品牌

2022-12-26   北京商报官方账号

北汽集团:复工复产加速跑全力冲刺收官战

2022-12-26   中国产业经济信息网

青年湖小学打造“小而美”学校

2022-12-26   北京青年报官网

天然冰场 乐享冬趣 环球今日讯

2022-12-26   北京青年报官网

青青菩提树(qqp)

2022-12-25   万能网

这个周末,熟悉的北京又回来了!

2022-12-25   北京日报客户端

斐的拼音(斐的拼音)

2022-12-25   万能网

首钢园∙六工汇开启迎新年活动

2022-12-25   北京青年报官网

老孔雀开屏(老孔雀开屏)

2022-12-25   万能网

大鳄龟(daegu)

2022-12-25   万能网

qq空间(qq客栈)

2022-12-25   万能网

北京买房:理清思路,购房建议692

2022-12-25   章哥说买房

上投先锋(上投先锋)

2022-12-25   万能网

疫情下的医院,如何运转?

2022-12-25   中国青年网

简讯:icandoallthings(icando)

2022-12-24   万能网

多地调整中小学期末安排

2022-12-24   中国教育新闻网

北京地铁里的200多个“治愈”故事

2022-12-24   北京青年报官网

析木镇(析) 今亮点

2022-12-24   万能网

多地发放文化旅游消费券

2022-12-24   北京青年报官网

truly yours(trulia) 时快讯

2022-12-23   万能网

2022年12月23日《石景山新闻》

2022-12-23   北京石景山

Copyright   2015-2022 中国行业信息网版权所有  备案号:   联系邮箱:29 59 11 57 8@qq.com