Spring3注解零配置

我们在以前学习 Spring 的时候,其所有的配置信息都写在 applicationContext.xml 里,大致示例如下:

java代码:
查看复制到剪贴板打印
<beans> 
<bean name="ds" class="org.apache.commons.dbcp.BasicDataSource"> 
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> 
<property name="url" value="jdbc:oracle:thin:@localhost:1521:wangbin"/> 
<property name="username" value="tech37"/> 
<property name="password" value="tech37"/> 
</bean> 
  
<bean name="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
<property name="dataSource" ref="ds"/> 
</bean> 
<tx:advice id="txAdvice" transaction-manager="txManager"> 
<tx:attributes> 
<tx:method name="get*" read-only="true"/> 
<tx:method name="*"/> 
</tx:attributes> 
</tx:advice> 
  
<aop:config> 
<aop:advisor advice-ref="txAdvice" 
pointcut="execution(* cn.javass..business.ebo.*Ebo.*(..))"/> 
</aop:config> 
</beans> 


在上面的示例中,我们可以典型的看到Spring的三种功能:
1、IoC容器,如:
<bean …>
<property…/>
</bean>
2、AOP
<aop:config/>
3、事务
<tx:advice/>
首先我们学习如何使用注解来构造IoC容器。
用注解来向Spring容器注册Bean。需要在applicationContext.xml中注册<context:component-scan base-package=“cn.javass”/>。表明cn.javass包及其子包中,如果某个类的头上带有特定的注解【@Component/@Repository/@Service/@Controller】,就会将这个对象作为Bean注册进Spring容器。
以上的4个注解,用法完全一摸一样,只有语义上的区别。
@Component 是所有受Spring 管理组件的通用形式,Spring 还提供了更加细化的注解形式:  @Repository 、@Service 、@Controller ,它们分别对应数据层Bean ,业务层Bean ,和表现层Bean 。
其中,@Component不推荐使用。
这四个注解都可以放在类的头上,如果不指定其value【@Service】,则默认的bean名字为这个类的简单类名首字母小写;如果指定value【@Service(“dao”)】,则使用value作为ban名字。
注意:如果cn.javass.SampleDao和cn.javass1.SampleDao都只用@Service注解,而不指定value会发生什么事?
除了注册Bean之外,还可以通过在<bean>上设置属性来控制Bean的其他属性,比如:
<bean name="" class=""
lazy-init=“true”  //是否延迟初始化
scope=“prototype”  //bean的生命周期
depends-on=“其他bean“ //依赖其他bean
/>
在Spring中也有相应的注解去对应
@Lazy
@Scope
@DependsOn
他们都是放在类的头上。
除了注册Bean之外,还可以通过在<bean>上设置属性来控制Bean的初始化方法和析构方法,比如:
<bean name="" class=""
init-method=“init“ //初始化方法
destroy-method=“close“ //析构方法
/>
在Spring中也有相应的Bean去对应,当然,这两个注解是jdk里内置的
@PostConstruct
@PreDestroy
这两个注解放在方法头上。
@Autowired 根据bean 类型从spring 上下文中进行查找。我们需要从以下几方面来学习这个注解:
1、它都能放在什么头上?
它可以放在属性、方法和构造方法头上。
2、根据什么注入?
2.1、如果某个接口的实现类在Spring容器中唯一的话,仅使用@Autowired就可以正确注入,如:
@Autowired
private SampleDao dao;
2.2、如果某个接口的实现类在Spring容器中不唯一
2.2.1、用@Qualifier来指定注入Bean的名字,如
@Autowired
@Qualifier(“sampleDaoImpl”)
private SampleDao dao;
2.2.2、用@Primary在多个Bean之中指定哪个为最优先者,注意它不是跟@Autowired配合使用,而是跟@Service配合使用,如
@Service @Primary SampleDaoImpl
2.2.3、用属性名、方法参数名、构造方法参数名来设置注入哪个 Bean,如
public class SampleDaoImpl implements SampleDao
public class SampleDaoImpl1 implements SampleDao
对应
@Autowired
private SampleDao sampleDaoImpl;
注意:属性名在编译后是一定存在的;但是方法参数名和构造方法参数名必须指定相应的编译选项才能保留。
3、@Autowired只有一个选项, boolean required() default true;是否必须,且默认为true。因此,如果仅仅使用@Autowired,就必须要能注入,否则会报错。
 
@Resource拥有和@Autowired类似的作用。
Spring还支持使用@Configuration,把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。

java代码:
查看复制到剪贴板打印
@Configuration("ctx") 
public class JavaApplicationContext { 
@Bean 
public String hello(){ 
return "hello"; 

@Bean 
public int max(){ 
return 9; 


使用AnnotationConfigApplicationContext获得Spring容器
ApplicationContext context = new AnnotationConfigApplicationContext(JavaApplicationContext.class);
使用@ImportResource (“classpath:applicationContext.xml”)可以把其他容器导入到这个容器中。
Spring使用的AOP注解分为三个层次:
1、@Aspect放在类头上,把这个类作为一个切面,但是这个类一定要显式的注册在Spring容器中。
2、 @Pointcut放在方法头上,定义一个可被别的方法引用的切入点表达式。
3、5种通知。 www.2cto.com
3.1、@Before,前置通知,放在方法头上。
3.2、@After,后置【finally】通知,放在方法头上。
3.3、@AfterReturning,后置【try】通知,放在方法头上,使用returning来引用方法返回值。
3.4、@AfterThrowing,后置【catch】通知,放在方法头上,使用throwing来引用抛出的异常。
3.5、@Around,环绕通知,放在方法头上,这个方法要决定真实的方法是否执行,而且必须有返回值。

视频配套PPT,视频地址【 spring 注解零配置视频教程  】

 

来自:http://www.2cto.com/kf/201207/140774.html

 

 

这里也讲的不错:http://www.douban.com/note/71602488/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring 中,使用 `JdbcTemplate` 操作数据库是非常常见的。它是一个简单而强大的 API,可以帮助我们快速、方便地进行数据库操作,但是需要进行一些配置。不过,Spring 也提供了零配置整合 `JdbcTemplate` 的方式,使得我们可以更加方便地使用它。 下面是一个示例: 1. 首先,在 pom.xml 文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.9</version> </dependency> ``` 2. 在 Spring配置文件中,添加以下内容: ```xml <!-- 数据源配置 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="root" /> </bean> <!-- JdbcTemplate 配置 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> ``` 3. 然后,在代码中使用 `@Autowired` 注解注入 `JdbcTemplate` 对象即可: ```java @Autowired private JdbcTemplate jdbcTemplate; ``` 这样,就可以在代码中直接使用 `jdbcTemplate` 对象进行数据库操作了,而无需进行其他配置。 总之,零配置整合 `JdbcTemplate` 可以帮助我们更加方便地使用 Spring 提供的数据库操作 API,同时也可以减少一些繁琐的配置工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值