IOC操作Bean管理(基于注解方式)
创始人
2024-03-12 21:19:49
0

 IOC 控制反转,把创建对象过程交给Spring进行管理。

目录

什么是注解

Bean 管理注解方式(创建对象)

基于注解方式实现对象创建

第一步:引入依赖 

第二步:开启组件扫描

创建类,在类上面添加创建对象注解(下面三个都可以)

Bean管理注解方式(组件扫描细节配置)

基于注解方式实现属性注入(注入属性@)

@AutoWired :根据属性类型进行自动装配;

@Qualifer :根据属性名称进行注入

@Resource :可以根据类型注入,可以根据名称注入

@Value :注入普通类型属性

 完全注解开发


 Bean 管理

 Bean 管理操作有两种方式

         第一种:基于xml配置文件方式实现

         第二种:基于注解方式实现

 基于xml配置文件方式实现可以看下面的文章

IOC 的底层原理和Bean管理XML方式、xml注入集合属性

Bean 管理(工厂bean)

ICO操作Bean管理的(bean的作用域和生命周期)

Bean 管理XmL方式(自动装配和外部属性文件)

话不多说,正式进入Bean管理的注解方式

什么是注解

  • 注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值)
  • 使用注解,注解作用于类上面,方法上面,属性上面
  • 使用注解目的,简化xml配置

Bean 管理注解方式(创建对象)

Spring针对Bean管理中创建对象提供注解

@Component   @Service  @Controller  @Repository

四个注解功能一样的,都可以用来创建bean实例,大多数时候会把它们写在不同层中,主要为了更好的理解不同层的业务逻辑。

基于注解方式实现对象创建

第一步:引入依赖 

第二步:开启组件扫描

通俗就是告诉spring5需要扫描某个类。

如果扫描多个包,在多个包之间使用逗号隔开;
 
如果是扫描同一个目录下所有的包,直接在路径中写上层目录
 

创建类,在类上面添加创建对象注解(下面三个都可以)

@Component   @Service  @Controller  @Repository

在注解里面的value属性值可以省略,如果省略 那它的默认值是类名称,但首字母会小写。

@Component(value = "userService") 就相当于 创建service时的路径 bean id="userService" class="..."

@Component(value = "userService")
public class UserService {public void add(){System.out.println("service add...");}
}

测试

  @Testpublic void testService (){ApplicationContext context =new ClassPathXmlApplicationContext("bean1.xml");UserService userService = context.getBean("userService",UserService.class);System.out.println(userService);userService.add();}

Bean管理注解方式(组件扫描细节配置)

use-default-filters="false" :表示现在不用默认Filter ,需要自己配置
context:include-filter:表示 设置扫描哪些内容
     
context:exclude-filter:设置哪些内容不进行扫描;
base-package="com.atguigu" 后面没有带 use-default-filters="false" 表示扫描所有,但 context:exclude-filter:可以设置哪些不被扫描。下面就表示布扫描 Component
    

基于注解方式实现属性注入(注入属性@)

@AutoWired :根据属性类型进行自动装配;

第一步:把service和dao对象创建,在service和dao类添加创建对象注解;

第二步:在service 注入dao对象;在service类添加dao类型属性,在属性上面使用注解

@Service
public class UserService {//定义dao类型属性//不需要添加set方法//添加注入属性注解@Autowiredprivate UserDao userDao;public void add(){System.out.println("service add...");userDao.add();}
}

@Qualifer :根据属性名称进行注入

这个@Qualifer注解的使用,和上面@AutoWired一起使用

@Service
public class UserService {//定义dao类型属性//不需要添加set方法//添加注入属性注解@Autowired //根据类型属性注入@Qualifier(value = "userDaoImpI")//根据名称注入private UserDao userDao;public void add(){System.out.println("service add...");userDao.add();}
}

@Resource :可以根据类型注入,可以根据名称注入

根据类型注入

    @Resourceprivate UserDao userDao;public void add(){System.out.println("service add...");userDao.add();}

根据名称注入

    @Resource(name = "userDaoImpI")private UserDao userDao;public void add(){System.out.println("service add...");userDao.add();}

@Value :注入普通类型属性

    @Value(value = "abc")private String name;

 完全注解开发

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

@Configuration  //作为配置类,替代xml 配置文件
@ComponentScan(basePackages = {"com.atguigu"})
public class SpringConfig {
}
上面代码的 @ComponentScan(basePackages = {"com.atguigu"}) 相当于 xml 文件

编写测试类

  @Testpublic void testService2 (){//加载配置类ApplicationContext context =new ClassPathXmlApplicationContext("bean1.xml");UserService userService = context.getBean("userService",UserService.class);System.out.println(userService);userService.add();}

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...