spring-1

创建bean对象

	<bean id ="dataSource" class="prj_1.JDBCDataSource">
		<property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/spring?serverTimezone=UTC"></property>
		<property name="user" value="root"></property>
		<property name="pwd" value="root"></property>
		<property name="characterEncoding" value="utf-8"></property>
		<property name="useUnicode" value="true"></property>
	</bean>
<bean id="UserDAO" class = "DAO.UserDAO">
		<property name="dataSource" ref = "dataSource"></property>
	</bean>
<bean id="UserDAO" class = "DAO.UserDAO" autowire="byType">
	<constructor-arg index="0" ref="dataSource"></constructor-arg>
</bean>	

autoType使用:

	<bean id="UserDAO" class = "DAO.UserDAO" autowire="byType">
	</bean>
可以达到相同效果,自动装配dataSource对象。


注入集合:

	<bean id ="Bean" class="com.util.Bean">
		<property name="cities">
			<list>
				<value>Jack</value>
				<value>Tom</value>
			</list>
		</property>
	</bean>
	<bean id ="Bean" class="com.util.Bean">
		<property name="cities">
			<set>
				<value>Jack</value>
				<value>Tom</value>
			</set>
		</property>
	</bean>
	<bean id ="Bean" class="com.util.Bean">
		<property name="cities">
			<map>
				<entry key="101" value="Jack"></value>
				<entry key="102" value="Tom"></value>
			</map>
		</property>
	</bean>
<bean id ="messageBean" class="com.util.MessageBean">
		<property name="friends">
			<pops>
				<prop key="name">root</value>
				<prop key="password">root</value>
		</property>
	</bean>

引用方式List集合注入

        <util:list id="list1">
		<value>Jack</value>
		<value>Tom</value>
	</util:list>
	<bean id ="messageBean" class="com.util.MessageBean">
		<property name="friends" ref="message2">
	</bean>

使用jdbc.properties配置jdbc,mysql数据库连接信息

特别注意:#{***},井号

    <util:properties id ="jdbc" location="classpath:jdbc.properties"/>
	<bean id ="dataSource" class="prj_1.JDBCDataSource">
		<property name="driver" value="#{jdbc.driver}"></property>
		<property name="url" value="#{jdbc.url}"></property>
		<property name="user" value="#{jdbc.user}"></property>
		<property name="pwd" value="#{jdbc.pwd}"></property>
		<property name="characterEncoding" value="#{jdbc.characterEncoding}"></property>
		<property name="useUnicode" value="#{jdbc.useUnicode}"></property>
	</bean>

jdbc.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/spring?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
user=root
pwd=root
characterEncoding=utf-8
useUnicode=true

扫描注解方式:

<context:component-scan base-package="DAO,prj_1"/>
    <util:properties id ="jdbc" location="classpath:jdbc.properties"/>

注:第一次写的时候,大意了包含User类的包DAO,base-package="DAO",却忘记了将包含JDBCDataSource的prj_1包添加至扫描包中,所以一直出错,而且提示错误在userDao中,所以不好找了。

@Component("dataSource")
public class JDBCDataSource {
	private String driver;    //    1
	@Value("#{jdbc.url}")
	private String url;
	@Value("#{jdbc.user}")
	private String user;
	@Value("#{jdbc.pwd}")
	private String pwd;
	@Value("#{jdbc.characterEncoding}")
	private String characterEncoding;
	@Value("#{jdbc.useUnicode}")
	private String useUnicode;
	public String getCharacterEncoding() {
		return characterEncoding;
	}
        @Value("#{jdbc.driver}")    //    2
	public void setDriver(String driver) throws Exception {
		System.out.println("执行getjdbc.driver");    //    3
		Class.forName(driver);
		this.driver = driver;
	}
注:对于driver变量的注解,如果写在1处的化,则代码3,不会执行
@Repository("userDAO")
public class JdbcUserDao implements UserDAO, Serializable{
	private JDBCDataSource dataSource;    //    1
	@Autowired
	public void setDataSource(@Qualifier("dataSource")JDBCDataSource dataSource) {    //    2
		System.out.println("!!.dataSource");    //    3
		this.dataSource = dataSource;
	}
注:与上面的一样的,如果把@Autowired放在1前面,也是可以的,但这3就不会执行了
JDBCDataSource dataSource = (JDBCDataSource) applicationContext.getBean("dataSource");
UserDAO userDAO = (UserDAO)applicationContext.getBean("userDAO");
此处的bean名字由类眉头的注解指定





















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值