【Java从0到架构师(2),Java教程百度云资源


public class ConnectionFactoryBean implements FactoryBean<Connection> {

	@Override

	public Connection getObject() throws Exception {

		Class.forName("com.mysql.jdbc.Driver");

        return DriverManager.getConnection("x", "x", "x");

	}

	

	@Override

	public Class<?> getObjectType() {

		return Connection.class;

	}

} 


// & 开头代表创建的是FactoryBean类型的对象

// 参考: BeanFactory中的FACTORY_BEAN_PREFIX

System.out.println(ctx.getBean("&conn")) 

```



[]( )引入外部配置文件

---------------------------------------------------------------------------



```

# db.properties

jdbc.driverClass=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/test_mybatis

jdbc.username=root

jdbc.password=root 

```



首先在 applicationContext.xml 根标签中引入标签库:  

![在这里插入图片描述](https://img-blog.csdnimg.cn/6b771e107c714d0e978789284cae0cc5.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzczNDA5NQ==,size_16,color_FFFFFF,t_70)



```

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:context="http://www.springframework.org/schema/context"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

       http://www.springframework.org/schema/beans/spring-beans.xsd

       http://www.springframework.org/schema/context

       http://www.springframework.org/schema/context/spring-context.xsd">



<!-- 引用db.properties文件的内容 -->

<context:property-placeholder location="db.properties"/>



<!-- FactoryBean -->

<bean id="conn" class="com.mj.obj.ConnectionFactoryBean">

    <property name="driverClass" value="${jdbc.driverClass}"/>

    <property name="url" value="${jdbc.url}"/>

    <!-- ${username} 会固定的获取到本机用户名 -->

    <property name="username" value="${jdbc.username}"/>

    <property name="password" value="${jdbc.password}"/>

</bean> 

```



[]( )SpEL表达式

--------------------------------------------------------------------------



> 参考资料:[https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions]( )



```

<bean id="dog" class="com.mj.domain.Dog"/>



<bean id="person" class="com.mj.domain.Person">

    <property name="dog" value="#{dog}"/>

    <property name="age" value="#{dog.testAge}"/>

    <property name="name" value="#{dog.testName.bytes.length}"/>

	<property name="name" value="#{dog.getTestName()}"/>-->

</bean> 

```



[]( )scope - 控制 bean 是否单例

---------------------------------------------------------------------------------------



> 参考资料:[https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-factory-scopes]( )



`scope="singleton"`:单例



*   通过同一个 id 值,在统一 IoC 容器中获取的永远是同一个实例

*   在 IoC 容器创建的时候,就会创建 bean,可以设置 `lazy-init="true"` 修改创建时机



`scope="prototype"`:非单例;每次 getBaen 时创建一次 bean



[]( )Converter

============================================================================



> [【Spring5.x】对象的生命周期、配置文件参数化、自定义类型转换器、后置处理Bean]( )



[]( )Spring 内置基本的类型转换功能

-------------------------------------------------------------------------------------



Spring 已经内置了基本的类型转换功能,比如:



*   String 转 int

*   String 转 Date(支持 **yyyy/MM/dd** 格式)



```

<bean id="service" class="com.mj.service.PersonServiceImpl">

	<property name="age" value="25"/>

	<property name="birthday" value="2011/09/10"/>

</bean> 

```



[]( )自定义 Converter

--------------------------------------------------------------------------------



实现 Converter 接口:



```

public class DateConverter implements Converter<String, Date> {

    private List<String> formats;

    public void setFormats(List<String> formats) {

        this.formats = formats;

    }



    @Override

    public Date convert(String s) {

    	try {

            return new SimpleDateFormat(format).parse(s);

        } catch (ParseException e) {

            e.printStackTrace();

            return null;

        }

    }

} 

```



注册 Converter:



> 注:id 为 conversionService 是固定的



```

<bean id="person" class="com.mj.domain.Person" p:birthday="09_10_2111"/>



<!-- id 固定为 conversionService -->

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">

    <property name="converters">

        <set>

            <bean class="com.mj.converter.DateConverter">

                <property name="formats" value="yyyy-MM-dd"/>

            </bean>

             <bean class="com.mj.converter.DateConverter">

                <property name="formats" value="MM_dd_yyyy"/>

            </bean>

        </set>

    </property>

</bean> 

```



* * *



进阶示例:在 xml 中传入 list 的类设计



## 总结

至此,文章终于到了尾声。总结一下,我们谈论了简历制作过程中需要注意的以下三个部分,并分别给出了一些建议:

**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)**

1.  技术能力:先写岗位所需能力,再写加分能力,不要写无关能力;
2.  项目经历:只写明星项目,描述遵循 STAR 法则;
3.  简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投;

> 以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频

![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/7db51b5a50ecb6cf00b039378381b09f.png)

![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/453c87b77c0d265da83cbdf62b6441eb.png)

![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/db85107d6240ffda9689df20baf1714f.png)

s://codechina.csdn.net/m0_60958482/java-p7)**

1.  技术能力:先写岗位所需能力,再写加分能力,不要写无关能力;
2.  项目经历:只写明星项目,描述遵循 STAR 法则;
3.  简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投;

> 以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频

[外链图片转存中...(img-F2qd3wSv-1630922250870)]

[外链图片转存中...(img-qpuJ0Nqj-1630922250872)]

[外链图片转存中...(img-qDkIvidN-1630922250874)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值