探秘Spring中Bean的注解宝典:解读存取Bean的相关注解及用法

这篇具有很好参考价值的文章主要介绍了探秘Spring中Bean的注解宝典:解读存取Bean的相关注解及用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

存储Bean对象

将对象存储在 Spring 中,有两种注解类型可以实现:

  1. 类注解:@Controller、@Service、@Repository、@Component、@Configuration
  2. 方法注解:@Bean

@Controller(控制器存储)

如下使用@Controller存储Bean代码:

@Controller
        public class UserController {
        public void SayHi(String name){
        System.out.println("你好"+name);
    }
}

使用获取上下文的方法获取上面存储的对象

public class Test {
    public static void main(String[] args) {
        //获取spring上下文
     ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
    //获取指定的Bean对象名称+类型进行获取
      UserController userController =  (UserController) applicationContext.getBean("userController");
      userController.SayHi("zcx");
    }
}

效果为
探秘Spring中Bean的注解宝典:解读存取Bean的相关注解及用法,JavaEE,spring,java,后端,开发语言,青少年编程

@Service(服务存储)

如下使用@Service存储Bean代码:

@Service
public class UserService {
    public void SayHi(String name){
        System.out.println("你好"+name);
    }
}

输出结果跟@Controller一样

@Repository(仓库存储)

如下使用@Repository存储Bean代码:

@Repository
public class UserRepository {
    public void SayHi(String name){
        System.out.println("你好"+name);
    }
}

@Component(组件存储)

如下使用@Component存储Bean代码:

@Component
public class UserComponent {
    public void SayHi(String name){
        System.out.println("你好"+name);
    }
}

@Configuration(配置存储)

如下使用@Configuration存储Bean代码:

@Configuration
public class UserConfiguration {
    public void SayHi(String name){
        System.out.println("你好"+name);
    }
}

需要这么多类注解是让程序员看到类注解之后,就能直接了解当前类
的⽤途,比如:

  • @Controller:表示的是业务逻辑层
  • @Servie:表示的是服务层
  • @Repository:表示的是持久层
  • @Configuration:表示的是配置层

Bean

⽅法注解是放到某个⽅法上的要配合类注解使⽤,如以下代码的实现:

@Controller
public class Users {
    @Bean
    public User user1(){
        User user = new User();
        return user;
    }
}

public class Test {
    public static void main(String[] args) {
        //获取spring上下文
     ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
    //获取指定的Bean对象名称+类型进行获取
    User user =  (User) applicationContext.getBean("user1");
      user.sayHi("zcx");
    }
}

user类

@Component
public class User {

    public void sayHi(String name){

        System.out.println(name+"你好");
    }

}

结果
探秘Spring中Bean的注解宝典:解读存取Bean的相关注解及用法,JavaEE,spring,java,后端,开发语言,青少年编程

重命名Bean

可通过设置 name 属性给 Bean 对象进⾏重命名操作

@Bean(name = {"u1", "us1"})
public User user1() {
User user = new User();
return user;
}

或者

@Bean(name = {"u1", "us1"})
public User user1() {
User user = new User();
return user;
}

获取Bean对象

获取Bean对象就是把对象取出来放入某个类中,也叫对象注入或者对象装配。
对象注入有三种实现方法:

  1. 属性注⼊
  2. 构造⽅法注⼊
  3. Setter 注⼊

下⾯我们按照实际开发中的模式,将 Service 类注⼊到 Controller 类中

属性注入

属性注⼊是使⽤ @Autowired 实现的,实现代码如下:

@Service
public class UserService {

    public User user1(){
        User user = new User();
        return user;
    }
}

@Controller
public class UserController {
    @Autowired
    private UserService userService;
    public User getUser(){
 return userService.user1();
    }
}

public class Test {
    public static void main(String[] args) {
        //获取spring上下文
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
        //获取指定的Bean对象名称+类型进行获取
        UserController userController = applicationContext.getBean(UserController.class);
      userController.getUser().sayHi("zcx");
    }
}

探秘Spring中Bean的注解宝典:解读存取Bean的相关注解及用法,JavaEE,spring,java,后端,开发语言,青少年编程

构造方法注入

构造⽅法注⼊是在类的构造⽅法中实现注⼊,实现代码如下:

@Controller
public class UserController {
    private UserService userService;
    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }
    public User getUser(){
 return userService.user1();
    }
}

其余代码写法跟属性注入一样

Setter注入

在设置 set ⽅法的时候需要加上 @Autowired 注解

@Controller
public class UserController {
    private UserService userService;
    @Autowired
    public void SetUserController(UserService userService) {
        this.userService = userService;
    }
    public User getUser(){
 return userService.user1();
    }
}

@Resource(注入关键字)

@Controller
public class UserController {
    @Resource
    private UserService userService;
    public User getUser(){
 return userService.user1();
    }
}

使用@Resource 可以解决同⼀类型多个 Bean 报错问题
可以如下设置方法名

@Resource(name = "user1")

@Autowired 和 @Resource 的区别文章来源地址https://www.toymoban.com/news/detail-600169.html

  • 出身不同:@Autowired 来⾃于 Spring,⽽ @Resource 来⾃于 JDK 的注解
  • 使⽤时设置的参数不同:相⽐于 @Autowired 来说,@Resource ⽀持更多的参数设置,例如name 设置,根据名称获取 Bean
  • @Autowired 可⽤于 Setter 注⼊、构造函数注⼊和属性注⼊,⽽ @Resource 只能⽤于 Setter 注⼊和属性注⼊,不能⽤于构造函数注⼊

到了这里,关于探秘Spring中Bean的注解宝典:解读存取Bean的相关注解及用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 更简单的存取Bean的方式(一)-五大类注解

      目录 使用类注解 前置工作  Bean命名规则  五大类的实现 JavaEE标准分层 之前我们存储Bean时,是在spring-config.xml文件中添加bean注册内容来实现的 通过\\\"注解\\\"我们可以替代这一项工作 更加简单的存储方式: 五大类注解: @Controller(控制器):用来控制前端提交的请求,验证用户请求的

    2023年04月25日
    浏览(20)
  • 【Spring】-Spring中Bean对象的存取

    作者 :学Java的冬瓜 博客主页 :☀冬瓜的主页🌙 专栏 :【Framework】 主要内容 :往spring中存储Bean对象的三大方式:XML方式(Bean标签);五大类注解;方法注解。从spring中取对象的两种方式:基本方法、注解方法(属性注入、set注入、构造方法注入)。 在Spring中,Bean的装配方式

    2024年02月12日
    浏览(18)
  • Spring 用注解更简单存取对象

    ​ 上一篇文章是最原始的创建使用,这篇主要是讲 Spring 更简单的存储和读取对象的核心是使用 注解 ,也是日常生活企业用的最多的方法 “注解” 所以这篇的内容是很重要的 !!! 1.1 前置工作 ​ 需要再 Spring 的配置文件中设置组件 Component 的根路径 这是很重要的一步,在

    2024年02月13日
    浏览(25)
  • Spring 更简单的读取和存储对象、使用注解存取对象

    我们知道物件都会随着时代的发展,越变越简单的。Spring 框架也不意外;我们在之前存储Bean对象是在配置文件中添加 bean/bean 来存入Bean对象到Spring当中的,使用那个类对象就要存入那个,一个两个类对象还好,如果需要的对象多了,就会非常麻烦。现在,随着 Spring 发展不用

    2024年02月11日
    浏览(34)
  • 【Spring】基于注解方式存取JavaBean:Spring有几种注入方式?有什么区别?

     Hello,我是小黄。众所周知,Spring是一个开源的Java应用程序框架,其中包括许多通过注解实现依赖注入的功能。Spring提供了多种注入方式,可以满足不同的需求和场景。常见的注入方式包括构造函数注入、Setter方法注入和属性注入。不同的注入方式有不同的适用场景和优缺

    2024年02月11日
    浏览(30)
  • spring-注解开发bean

    使用@Component定义bean 在配置文件中通过组建扫描加载bean 3.也可以通过不要配置文件,定义类,使用@Configuration,来代替配置文件 基于注解定义bean 1.@component,大部分的bean都可以通过这个来定义 1.1@Controller,控制层 1.2@Service,服务层 1.3@Repository,数据层 2.对于纯注解的开发,还

    2024年02月13日
    浏览(27)
  • 11Spring IoC注解式开发(上)(元注解/声明Bean的注解/注解的使用/负责实例化Bean的注解)

    注解的存在主要是为了简化XML的配置。Spring6倡导全注解开发。 注解开发的优点 :提高开发效率 注解开发的缺点 :在一定程度上违背了OCP原则,使用注解的开发的前提是需求比较固定,变动较小。 自定义一个注解: 该注解上面修饰的注解包括:Target注解和Retention注解,这两个注

    2024年01月21日
    浏览(32)
  • Spring基于注解管理bean及全注解开发

    Spring是一款主流的Java EE 轻量级开源框架,目的是用于简化Java企业级引用的开发难度和开发周期。从简单性、可测试性和松耦合度的角度而言,任何Java应用都可以从Spring中受益。Spring框架提供自己提供功能外,还提供整合其他技术和框架的能力。 Spring自诞生以来备受青睐,

    2024年02月14日
    浏览(29)
  • Spring使用注解管理Bean

    引入lib包 Spring对Bean管理的常用注解 @Component组件(作用在类上) Spring中提供了@Component的三个衍生注解:(功能在目前为止是一致的) @Controller WEB层 @Service 业务层 @Repository 持久层 属性注入的注解:(使用注解注入的方式,可以不用提供set方法) @Value  用于注入普通类型 @Autowired  自动装

    2024年01月17日
    浏览(30)
  • Spring使用注解存储Bean对象

    在前一篇博客中( Spring项目创建与Bean的存储与读取(DL))介绍的是通过配置文件注册对象从而存储到 Spring 中,这种方式其实还是挺繁琐的。 实际上,在使用学习使用 Spring过程中,当我们要实现一个功能的时候,先应该考虑的是有没有相应的注解是实现对应功能的,Spring 中

    2024年02月16日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包