博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【JAVAEE系列之Spring】003创建与使用Bean
阅读量:5254 次
发布时间:2019-06-14

本文共 2115 字,大约阅读时间需要 7 分钟。

Bean常常用于配置相关信息,或者用于依赖注入,防止硬编码,更好地单元测试。

Bean的管理都是Spring来做的,当需要Bean对象的时候,Spring拦截掉你的请求,将已有的Bean对象返回给你,而不是去创建一个新对象,这样就控制了Bean对象的生命周期。

【使用@Bean创建Bean】

我们试着创建一个配置类,返回我们想要的数据库连接源DataSource:

@Beanpublic DataSource dataSource() {    DriverManagerDataSource dataSource = new     DriverManagerDataSource();    dataSource.setDriverClassName("com.mysql.jdbc.Driver");    dataSource.setUrl("jdbc:mysql://localhost:3306/db1");    dataSource.setUsername("root");    dataSource.setPassword("123");    return dataSource;}

首先,创建了一个dataSource,然后配置了连接字符串,className,用户名密码等信息。

默认情况下,这个Bean的名称和方法名一致,可以通过name参数修改:

@Bean(name="theSource")public DataSource dataSource() {...

也可以设置生命周期:

@Bean@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)public DataSource dataSource() {...

 

【使用@Component创建Bean】

@Bean常常用于配置类,@Component范围更广。

我们在com.springapp.services包下创建一个Bean:

@Component public class UserService {    public int findNumberOfUsers() {        return 10;    }}

这个Bean就是一个基础的方法,返回用户的数量,我们先不涉及到数据库,以依赖注入为重。

如何让spring知道我们有这个Bean的存在呢?

加入包扫描:

@Configuration@EnableWebMvc@ComponentScan(basePackages = {"com.springcookbook.controller", "com.springcookbook.service"})public class AppConfig {}

同样,我们也可以为其设置名称:

@Component('anAmazingUserService')public class UserService {}

 

@Controller常常用于控制器类

@Service用于服务类、业务逻辑类

@Repository用于持久化类

 

【使用Bean】

1. 使用AutoWired注入Bean:

@AutowiredUserService userService;

2.使用Bean对象

@Controller

public class HelloController {
  @Autowired
  UserService userService;
  @RequestMapping("/hello")
  @ResponseBody
  public String hi() {
    return "Hello from Maven project!" + "There are " + userService.getUserNums() +"users.";
  }
}

3. 效果

【手动注入Bean】

 

1. 引入ApplicationContext

@Autowiredprivate ApplicationContext applicationContext;

 

2. 使用ApplicationContext根据名称获取对象

UserService userService = (UserService)applicationContext.getBean("userService");

 

【拆分配置文件】

1. 创建配置文件类

@Configurationpublic class DatabaseConfig {…

 

2. 将配置类注册到ServletInitializer

@Overrideprotected Class
[] getServletConfigClasses() { return new Class
[]{AppConfig.class, DatabaseConfig.class};}

 

转载于:https://www.cnblogs.com/dayAndnight2019/p/11309875.html

你可能感兴趣的文章
shuzhuanshuzu
查看>>
poj3384Feng Shui
查看>>
neural network
查看>>
JavaEE开发之Spring中Bean的作用域、Init和Destroy方法以及Spring-EL表达式
查看>>
Nginx和uwsgi的优化
查看>>
mysql 强制修改密码
查看>>
C#基础知识总结(六)
查看>>
多个数据读取的两种简写方法
查看>>
python中的__getattr__、__getattribute__、__setattr__、__delattr__、__dir__
查看>>
leetcode 日记 3sumclosest java
查看>>
OSG立体模式下动态修改相机远近裁剪面的实现
查看>>
java中的匿名内部类总结
查看>>
html 引号可以是单引号
查看>>
学习笔记23
查看>>
bootstrap 的 datetimepicker,同时有日期和时间, 且开始时间要早于结束时间
查看>>
用Netty开发中间件:高并发性能优化(转)
查看>>
Git 子模块 - submodule(转)
查看>>
Android中注解的使用
查看>>
将计算出的MD5值转换为字符串
查看>>
spring-quartz.xml
查看>>