老域名做网站,wordpress主题残留,做门户网站,如何制作统计小程序Spring 非自定义Bean注解
1.概述
在xml中配置的Bean都是自己定义的#xff0c; 例如#xff1a;UserDaolmpl#xff0c;UserServicelmpl。但是#xff0c;在实际开发中有些功能类并不是我们自己定义的#xff0c; 而是使用的第三方jar包中的#xff0c;那么#xff0c…Spring 非自定义Bean注解
1.概述
在xml中配置的Bean都是自己定义的 例如UserDaolmplUserServicelmpl。但是在实际开发中有些功能类并不是我们自己定义的 而是使用的第三方jar包中的那么这些Bean要想让Spring进行管理也需要对其进行配置配置非自定义的Bean需要考虑如下两个问题
被配置的Bean的实例化方式是什么?无参构造、有参构造、静态工厂方式还是实例工厂方式被配置的Bean是否需要注入必要属性。
2.代码演示
非自定义Bean不能像自定义Bean一样使用Component进行管理非自定义Bean要通过工厂的方式进行实例化使用Bean标注方法即可Bean的属性为beanName如不指定则当前工厂方法名称作为beanName
Component
public class ConfigBean {// 将方法返回值Bean实例以Bean注解指定的名称存储到Spring容器中Bean(dataSource)public DataSource dataSource(){DruidDataSource dataSource new DruidDataSource();dataSource.setDriverClassName(com.mysql.jdbc.Driver);dataSource.setUrl(jdbc:mysql://localhost:3306/mybatis);dataSource.setUsername(root);dataSource.setPassword(root);return dataSource;}
}PS工厂方法所在类必须要被Spring管理。例如上面的工厂方法dataSource()所在的类ConfigBean需要先被注入到容器中所以要在ConfigBean上添加Component注解
如果Bean工厂方法需要参数的话则有如下几种注入方式
使用Autowired 根据类型自动进行Bean的匹配Autowired可以省略 使用Qualifier 根据名称进行Bean的匹配使用Value 根据名称进行普通数据类型匹配。
Bean
Autowired //根据类型匹配参数
public Object objectDemo01(UserDao userDao){System.out.println(userDao);return new Object();
}Bean
public Object objectDemo02(Autowired UserDao userDao){// Autowired作用在参数上时可以省略System.out.println(userDao);return new Object();
}// Qualifier可以单独使用在参数上根据名称注入
Bean
public Object objectDemo03(Qualifier(userDao) UserDao userDao, Value(${jdbc.username}) String username){System.out.println(userDao);System.out.println(username);return new Object();
}