Spring存储和读取Bean对象的方法

将对象存储在Spring中,有两种注解类型:类注解和方法注解

类注解:@Controller、@Service、@Repository、@Component、@Configuration

1.@Contorller(控制器存储)

2.@Service(服务存储)

3.@Repository(仓库存储)

4.@Component(组件存储)

5.@Component(配置存储)

类注解的存储方式都是一样的,将类注解写在要存储的类的上方,如下代码,可以将@Controller换成任意一个类注解,效果都是一样的

import org.springframework.stereotype.Controller;

@Controller
public class StudentController {
    public void sayHi() {
        System.out.println("Hi student");
    }
}

既然五个类注解的效果都是一样的,为什么不只用一个固定的反而要用五个呢?

这是为了让程序员在看到这些类注解以后,可以直接指导这些类注解的用途。比如:

@Controller  业务逻辑层

@Service  服务层

@Repository  持久层

@Configuration 配置层

为什么只有四个?@Component去哪里了?

在我们查看类注解的源码的时候,我们发现其实@Component是其余四个类注解的“父类”

读取Bean对象的方法

import com.java.demo.controlloer.StudentController;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

        StudentController studentController = context.getBean("studentController", StudentController.class);
        studentController.sayHi();
    }
}

getbean方法中的第一个参数的作用是获取类名。有两种命名规则 第一种是上面代码中的将类名的第一个字母小写,第二种方法是当类名的第一个字母和第二个字母都是大写的时候,直接把类名写进去就可以,不需要做任何改变

方法注解@Bean

方法注解必须要配合类注解才可以使用而且被方法注解的方法必须有返回值并且返回的是一个对象,我们可以再@Bean后面加上这个方法的名字(自定义)也可以有多个名字,方便读取bean对象。

import com.java.demo.entity.User;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@Component
public class UserBeans {
    @Bean(name = {"user", "u1"})
    public User getUser() {
        User user = new User();
        user.setUid(1);
        user.setUsername("张三");
        user.setPassword("123456");
        user.setAge(18);
        return user;
    }
}

这是User类

public class User {
    private Integer uid;
    private String username;
    private String password;
    private Integer age;

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

读取bean对象

和类注解读取对象的方法一样

import com.java.demo.entity.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");


        User user = context.getBean("user", User.class);
        System.out.println(user.getUsername());
    }

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值