IOC操作--数据库配置和注解开发
⽬录
1.IOC操作Bean管理(外部属性⽂件)
1.1直接配置数据库
配置德鲁伊连接池
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="sql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/book"></property>
<property name="username" value="root"></property>
<property name="password" value="123"></property>
</bean>
引⼊德鲁伊连接池的jar包
1.2引⼊外部⽂件配置数据库连接池
创建properties⽂件,在⾥⾯写数据库的信息
prop.sql.jdbc.Driver
prop.url=jdbc:mysql://localhost:3306/book
prop.username=root
prop.password=123
把外部properties⽂件引⼊到spring的配置⽂件中
1. 引⼊context名称空间
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
xmlns:xsi="/2001/XMLSchema-instance"
xmlns:context="/schema/context"
xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd                            /schema/context /schema/context/spring-context.xsd">
2. 在xml配置⽂件中,使⽤标签引⼊数据库⽂件
<!--引⼊外部属性⽂件-->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
<!--配置连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${prop.driverClass}"></property>
<property name="url" value="${prop.url}"></property>
<property name="username" value="${prop.username}"></property>
<property name="password" value="${prop.password}"></property>
</bean>
2.IOC操作---注解开发
注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值)
使⽤注解,注解作⽤在类上⾯,⽅法上⾯,属性上⾯
使⽤注解⽬的:简化 xml 配置
2.2Spring针对Bean管理创建对象提供了四种注解
(1)@Component
(2)@Service
(3)@Controller
(4)@Repository
* 上⾯四个注解功能是⼀样的,都可以⽤来创建 bean 实例
2.3基于注解⽅式实现对象创建
(1)引⼊aop的jar依赖
(2)添加context名称空间和开启组件扫描
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
xmlns:xsi="/2001/XMLSchema-instance"
xmlns:context="/schema/context"
xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd                            /schema/context /schema/context/spring-context.xsd">
<!--开启组件扫描
要扫描多个包可以⽤逗号隔开
<context:component-scan base-package="com.hzj.spring5.dao,com.hzj.spring5.service"></context:component-scan>也可以直接书写上层⽬录
-->
<context:component-scan base-package="com.hzj.spring5"></context:component-scan>
</beans>
(3)在类上⾯添加创建对象注解
//如果不写value,默认值是类名称⾸字母⼩写
@Service(value = "userService")//<bean id="userService" class="...">
public class UserService {
public void add(){
System.out.println("");
}
}
开启组件扫描的细节
<!--⽰例 1
use-default-filters="false" 表⽰现在不使⽤默认 filter,⾃⼰配置 filter
context:include-filter ,设置扫描哪些内容
-->
<context:component-scan base-package="com.hzj" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>    </context:component-scan>
<!--⽰例 2
下⾯配置扫描包所有内容
context:exclude-filter:设置哪些内容不进⾏扫描
-->
<context:component-scan base-package="com.hzj">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>    </context:component-scan>
2.4基于注解⽅式实现属性注⼊
(1)@AutoWire:根据属性类型进⾏⾃动装配
@Service
public class UserService {
//定义 dao 类型属性
//不需要添加 set ⽅法
//添加注⼊属性注解
@Autowired
private UserDao userDao;
public void add() {
System.out.println("");
spring ioc注解userDao.add();
}
}
(2)@Qualifier:根据名称进⾏注⼊(要与@Autowire配合使⽤)
//定义 dao 类型属性
//不需要添加 set ⽅法
//添加注⼊属性注解
@Autowired //根据类型进⾏注⼊
@Qualifier(value = "userDaoImpl1") //根据名称进⾏注⼊
private UserDao userDao;
(3)@Resource:可以根据类型注⼊,可以根据名称注⼊
//@Resource//⽆name表⽰根据类型注⼊
@Resource(name = "userDaoImpl")//带name表⽰根据名称注⼊
private UserDao userDao;
(4)@Value:注⼊普通类型属性
@Value("hzj")//注⼊普通类型属性
private String name;
2.5完全注解开发
(1)创建配置类,替代xml配置⽂件
@Configuration //作为配置类,替代 xml 配置⽂件
@ComponentScan(basePackages = {"com.hzj"})
public class SpringConfig {
}
(2)编写测试类
@Test
public void UserTest2(){
//完全注解开发
//加载配置类
ApplicationContext context=
new AnnotationConfigApplicationContext(SpringConfiguration.class);        UserService Bean("userService",UserService.class);        System.out.println(userService);
userService.add();
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。